1
我已经应用CSS样式到JavaFX组件,它看起来像一切正常,除了一种情况:当我添加JavaFX组件到组件树对即时它们的CSS样式不适用。CSS样式不应用于加入到JavaFX的组件树元素
例如以下代码:
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代码中,或者在添加任何组件后提供另一个包含相同数据和更改样式表的样式表(但对于每个现有的样式表),但我希望找到一些优雅的解决方案。
在此先感谢。