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代碼中,或者在添加任何組件後提供另一個包含相同數據和更改樣式表的樣式表(但對於每個現有的樣式表),但我希望找到一些優雅的解決方案。
在此先感謝。