ScalaFX/JavaFX 样式表未完全委托

ScalaFX/JavaFX Stylesheet is not delegated completely

所以我正在尝试将样式表添加到我的场景中。这很好用,直到我来到场景的第二层。我有以下 style.css:

.label: {
    -fx-font: 16px "Serif";
    -fx-padding: 5;
}

.root {
    -fx-background: cornflowerblue;
    -fx-fill: orchid;
}

我设法使用以下代码将其附加到我的场景中:

private val mainLayout = new BorderPane() {...} // stylesheet missing
private val baseLayout = new StackPane() { // root element, has stylesheet
  children.add(mainLayout)
  ...
}
private val scene: Scene = new Scene(baseLayout) {
  stylesheets.add("style.css") // stylesheet works, but I can only style root
}

根样式也有效,但如果我在调试器中单击层,样式表会在根元素之后消失。我的根是一个 StackPane,其中包含一个 BorderPaneBorderPane 已经不包含给定的样式表。

我错过了什么?当我稍后添加元素时,样式表不会委托通过吗?我目前没有使用场景构建器,因为我在 scala 中遇到了一些宏扩展的依赖问题。

提前致谢


编辑

分解问题:我有我的样式表样式根和标签。我创建我的场景:

var label: Label = new Label()
label.setText("Hello World!")
private val root = new StackPane() {
  children.add(label)
}
private val scene: Scene = new Scene(root) {
  stylesheets.add("style.css")
}

根样式有效,标签未更改。

我正在使用 scalafx 库,所以我所有的 fx 类型都来自这个库(scalafx.scene.layout.Labelscalafx.scene.Scene 等)

好的。对不起。我发现了错误:我在 css 中的 label 标记后添加了一个冒号。我没有 IDEA 终极版,所以没有 css 支持,这就是我没有注意到的原因。现在可以了。正确的 css 应该是这样的:

.label {
    -fx-font: 16px "Serif";
    -fx-padding: 5;
}

.root {
    -fx-background: cornflowerblue;
    -fx-fill: orchid;
}