JavaFX CSS通过@import和变量进行主题化

时间:2015-03-17 18:49:41

标签: javafx-8 javafx-css

我已经将变量分配给我的JavaFX CSS中经常使用的颜色并引用变量而不是颜色常量:

* {
    theme-backgroundDark: #335588;
}

#messageListPane {
    -fx-background-color: theme-backgroundDark;
}

现在我想采用我定义颜色变量名称的块并将其移动到单独的.css文件中。这将允许我在运行时交换出不同的.css文件来更改应用程序的主题:

Theme1.css

* {
    theme-backgroundDark: #335588;
}

的main.css

@import url( "/styles/Theme1.css" );

#messageListPane {
    -fx-background-color: theme-backgroundDark;
}

但是当我这样做时,JavaFX无法在运行时找到变量:

WARNING: Could not resolve 'theme-backgroundDark' while resolving lookups for '-fx-background-color' from rule '*#messageListPane ' in stylesheet file:/C:/xxxx/styles/Main.css

@import语句不是问题;我有其他@import来定义类选择器,那些在Main.css中得到了很好的选择。它似乎与通配符选择器* { ... }有关。

那么为什么在通配符选择器中命名的颜色变量在同一个CSS中工作,但从另一个CSS导入时却不能?

1 个答案:

答案 0 :(得分:0)

指定的颜色很好。我的@import语句被忽略了,就这么简单。如果我通过代码手动附加Themes.css,则可以看到指定的颜色。 @import语句没有获取主题文件,也没有给我任何类型的错误。我会为此打开另一个问题。