JavaFX CSS で頻繁に使用される色に変数を割り当て、色定数ではなく変数を参照することにしました。
* {
theme-backgroundDark: #335588;
}
#messageListPane {
-fx-background-color: theme-backgroundDark;
}
ここで、色変数名を定義するブロックを取得し、それを別の .css ファイルに移動します。これにより、実行時にさまざまな .css ファイルを交換して、アプリケーションのテーマを変更できます。
Theme1.css
* {
theme-backgroundDark: #335588;
}
メイン.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 からインポートした場合は機能しないのはなぜでしょうか?