JavaFX 样式复选框

JavaFX style checkbox

我使用这个 css-脚本,我包含在 setStyle:

checkBox.setStyle("" +
            ".check-box:selected > .box {\n" +
            "    /* background color for selected checkbox */\n" +
            "    -fx-background-color: lime;\n" +
            "}\n" +
            "\n" +
            ".check-box > .box {\n" +
            "    /* background color of unselected checkbox */\n" +
            "    -fx-background-color: red;\n" +
            "}\n" +
            "\n" +
            ".check-box:selected > .box > .mark,\n" +
            ".check-box:indeterminate  > .box > .mark {\n" +
            "    /* modify mark color */\n" +
            "    -fx-background-color: blue;\n" +
            "}");

但是不行....

我用Java 9

感谢您的帮助

这行不通。 style 属性 只能包含 属性 赋值,不能包含选择器。

您可以使用样式表和 style 属性 的组合来分配这些颜色,尽管使用查找的颜色(尽管仅适用于颜色):

CSS 样式表

.check-box {
    /* default properties */
    selected-box-color: black;
    box-color: black;
    mark-color: white;
}

.check-box:selected > .box {
    /* background color for selected checkbox */
    -fx-background-color: selected-box-color;
}

.check-box > .box {
    /* background color of unselected checkbox */
    -fx-background-color: box-color;
}

.check-box:selected > .box > .mark,
.check-box:indeterminate  > .box > .mark {
    /* modify mark color */
    -fx-background-color: mark-color;
}

Java代码

// overwrite colors from stylesheet
checkBox.setStyle("selected-box-color: lime; box-color: red; mark-color: blue;");

使用 JavaFX 中的 setStyle() 方法,您可以使用 class 代码中的 css 代码设置组件的默认状态样式,但我认为您无法更改所选州 css。我建议只给节点一个带有 node.setID("someID") 的唯一 ID,然后在实际的 css 文件中工作