JavaFX CSS 在运行时更改自定义样式类的属性

Posted

技术标签:

【中文标题】JavaFX CSS 在运行时更改自定义样式类的属性【英文标题】:JavaFX CSS change property of custom style class at runtime 【发布时间】:2018-01-14 01:53:40 【问题描述】:

我对 CSS 非常陌生,因为我从未使用过网络语言,但对于 JavaFX 应用程序,我有一个带有 windows 10 UWP 主题的 css 样式表。默认样式类使用默认的 windows 灰色按钮主题,但我还为彩色组件创建了自定义样式类。

颜色作为默认样式的 .root 样式类中的变量,并在彩色样式的 .colored 样式类中被覆盖。

.root 

    -fill-color: #CCCCCC;
    ...


.colored

    -fill-color: #DD2867;
    ...

我现在想在运行时更改彩色样式颜色。 我知道 Node#setStyle(String) ,我可以在其中修改填充颜色,如下所示:

root.setStyle("-fill-color: #FF00FF;");

但这只会影响 .root 样式类中的颜色,而不影响 .colored 样式类。

您能告诉我一种在运行时直接修改样式类的属性的方法,还是一种更好的方法来使用默认样式和彩色样式?

提前致谢, 埃隆。

【问题讨论】:

【参考方案1】:

在根节点上定义另一种查找颜色,并在您的.colored 类中使用它:


    -fill-color: #CCCCCC;
    -colored-fill: #DD2867 ;
    ...


.colored

    -fill-color: -colored-fill;
    ...

然后您可以以相同的方式以编程方式更改该颜色:

root.setStyle("-colored-fill: ... ;");

【讨论】:

非常感谢您。它完全符合我的要求。

以上是关于JavaFX CSS 在运行时更改自定义样式类的属性的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX CSS 错误(属性样式表不存在)

JavaFX8 DatePicker 按钮大小更改

JavaFX 样式所有相同类型的节点,例如,VBox

RangeSlider 的 JavaFX ControlsFX CSS

将 CSS 样式表与 ASP.NET 自定义控件链接

JavaFX文档啥是JavaFX