我已经将CSS样式应用于JavaFX组件,除了一种情况外,它看起来一切正常:当我将JavaFX组件即时添加到组件树时,它们的CSS样式不会被应用。
例如以下代码:
package test;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.shape.Rectangle;
import javafx.scene.input.MouseEvent;
import javafx.util.Math;
import javafx.scene.paint.Color;
function getRect(): Rectangle {
return Rectangle {
x: 230 * Math.random()
y: 60 * Math.random()
width: 20, height: 20
styleClass: "abc"
}
}
def stage: Stage = Stage {
scene: Scene {
width: 250, height: 80
stylesheets: "{__DIR__}main.css"
content: [
Rectangle {
x: 0, y: 0, width: 250, height: 80
fill: Color.WHITE
onMouseClicked: function (evt: MouseEvent): Void {
insert getRect() into stage.scene.content;
}
}
getRect()
]
}
}
以下样式表:
.abc {
fill: red;
}
main.css
文件中的(均在test
包中)在白色背景上显示红色方块,但在点击主矩形后,黑色(不是红色)方块会添加到场景中。
我注意到了:
stylesheets
属性(使其指向另一个有效的样式表)后,已添加的对象将正确呈现。有谁知道这个问题的解决方案?我当然可以将所有属性放入JavaFX代码中,或者提供另一个样式表(对于每个现有样式表),它们包含相同的数据并在添加任何组件后立即更改样式表,但我想找到一些优雅的解决方案。
提前致谢。
答案 0 :(得分:1)
这是1.2中的一个错误。它在下一个版本中修复。