【问题标题】:CSS styles are not applied to elements added to JavaFX component treeCSS 样式不适用于添加到 JavaFX 组件树的元素
【发布时间】:2010-05-27 05:00:06
【问题描述】:

我已将 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 属性(使其指向另一个有效的样式表)后,已添加的对象正确呈现。

有人知道这个问题的解决方法吗?我当然可以将所有属性放入 JavaFX 代码或提供另一个样式表(对于每个现有样式表),其中包含相同的数据并在添加任何组件后立即更改样式表,但我想找到一些优雅的解决方案。

提前致谢。

【问题讨论】:

    标签: css javafx


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      相关资源
      最近更新 更多