【发布时间】:2010-05-27 05:00:06
【问题描述】:
我已将 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 包中)在白色背景上显示红色方块,但在单击主矩形后,黑色(非红色)方块会添加到场景中。
我注意到:
- 动态添加的组件看起来就像没有应用样式信息一样。
- 如果您在 JavaFX 代码中设置它们的样式,那么一切正常。
- 更改
stylesheets属性(使其指向另一个有效的样式表)后,已添加的对象正确呈现。
有人知道这个问题的解决方法吗?我当然可以将所有属性放入 JavaFX 代码或提供另一个样式表(对于每个现有样式表),其中包含相同的数据并在添加任何组件后立即更改样式表,但我想找到一些优雅的解决方案。
提前致谢。
【问题讨论】: