CSS样式不适用于添加到JavaFX组件树的元素

时间:2010-03-03 23:32:43

标签: css javafx

我已经将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包中)在白色背景上显示红色方块,但在点击主矩形后,黑色(不是红色)方块会添加到场景中。

我注意到了:

  1. 动态添加的组件看起来就像未应用样式信息一样。
  2. 如果您在JavaFX代码中设置其样式,那么一切正常。
  3. 更改stylesheets属性(使其指向另一个有效的样式表)后,已添加的对象将正确呈现。
  4. 有谁知道这个问题的解决方案?我当然可以将所有属性放入JavaFX代码中,或者提供另一个样式表(对于每个现有样式表),它们包含相同的数据并在添加任何组件后立即更改样式表,但我想找到一些优雅的解决方案。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

这是1.2中的一个错误。它在下一个版本中修复。