JavaFX CSS 通过@import 和变量进行主题化
JavaFX CSS theming via @import and variables
我已经开始为我的 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
定义了 class 选择器,这些选择器在 Main.css
中得到了很好的选择。好像跟通配符选择器* { ... }
.
有关系
那么,为什么通配符选择器中的命名颜色变量在同一个 CSS 中工作,但从另一个 CSS 导入时却不能?
命名的颜色很好。我的@import 语句被忽略了,就这么简单。如果我通过代码手动附加 Themes.css,则命名的颜色是可见的。 @import 语句没有获取主题文件,也没有给我任何类型的错误。我将为此打开另一个问题。
我已经开始为我的 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
定义了 class 选择器,这些选择器在 Main.css
中得到了很好的选择。好像跟通配符选择器* { ... }
.
那么,为什么通配符选择器中的命名颜色变量在同一个 CSS 中工作,但从另一个 CSS 导入时却不能?
命名的颜色很好。我的@import 语句被忽略了,就这么简单。如果我通过代码手动附加 Themes.css,则命名的颜色是可见的。 @import 语句没有获取主题文件,也没有给我任何类型的错误。我将为此打开另一个问题。