Я применил стиль 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 или предоставить другую таблицу стилей (для всех существующих стилей), которая будет содержать те же данные и изменять таблицу стилей сразу после добавления любого компонента, но я хотел бы найти какое-то элегантное решение.
Заранее спасибо.