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
,其中包含一个 BorderPane
。 BorderPane
已经不包含给定的样式表。
我错过了什么?当我稍后添加元素时,样式表不会委托通过吗?我目前没有使用场景构建器,因为我在 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.Label
、scalafx.scene.Scene
等)
好的。对不起。我发现了错误:我在 css 中的 label 标记后添加了一个冒号。我没有 IDEA 终极版,所以没有 css 支持,这就是我没有注意到的原因。现在可以了。正确的 css 应该是这样的:
.label {
-fx-font: 16px "Serif";
-fx-padding: 5;
}
.root {
-fx-background: cornflowerblue;
-fx-fill: orchid;
}
所以我正在尝试将样式表添加到我的场景中。这很好用,直到我来到场景的第二层。我有以下 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
,其中包含一个 BorderPane
。 BorderPane
已经不包含给定的样式表。
我错过了什么?当我稍后添加元素时,样式表不会委托通过吗?我目前没有使用场景构建器,因为我在 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.Label
、scalafx.scene.Scene
等)
好的。对不起。我发现了错误:我在 css 中的 label 标记后添加了一个冒号。我没有 IDEA 终极版,所以没有 css 支持,这就是我没有注意到的原因。现在可以了。正确的 css 应该是这样的:
.label {
-fx-font: 16px "Serif";
-fx-padding: 5;
}
.root {
-fx-background: cornflowerblue;
-fx-fill: orchid;
}