CSS styles are not applied to elements added to JavaFX component tree
Posted
by pazabo
on Stack Overflow
See other posts from Stack Overflow
or by pazabo
Published on 2010-03-03T23:32:43Z
Indexed on
2010/03/23
1:51 UTC
Read the original article
Hit count: 328
I have applied CSS style to JavaFX components and it looks like everything is working fine except one situation: when I add JavaFX components to component tree on-the-fly their CSS styles are not applied.
For example following code:
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()
]
}
}
with following stylesheet:
.abc {
fill: red;
}
in main.css
file (both in test
package) display red square on white background, but after clicking the main rectangle black (not red) squares are added to scene.
I noticed that:
- Components added dynamically look just like style information was not applied.
- If you set their style in JavaFX code then everything works fine.
- After changing
stylesheets
property (so that it points to another valid stylesheet) the objects already added render properly.
Does anyone know the solution to this problem? I could of course put all the properties into JavaFX code or provide another stylesheet (for every existing stylesheed) that would contain the same data and change stylesheet right after adding any component, but I would like to find some elegant solution.
Thanks in advance.
© Stack Overflow or respective owner