JavaFXのドキュメントは、プロパティがCSSルートクラスで定義されている場合、シーン内の任意のオブジェクトから参照できることを示唆しているようです。
.rootスタイルクラスには、UIで一貫性を提供するために他のスタイルで使用できるプロパティが含まれています。たとえば、プロパティ-fx-focused-baseは.rootスタイルで定義されています。このプロパティは、他のUIコントロールのスタイルで、フォーカスがある場合のコントロールの色として使用されます。
たとえば、次の単純なアプリケーションでは、次のようになります。
public class Main extends Application {
@Override
public void start(Stage stage) throws Exception {
AnchorPane pane = new AnchorPane();
Scene s = new Scene(pane, 800, 600);
pane.getStylesheets().add("test.css");
pane.getStyleClass().add("test");
System.out.println("Root pane style classes:");
for (String clazz : pane.getStyleClass())
System.out.println(clazz);
stage.setScene(s);
stage.show();
}
public static void main(String[] args) {
Application.launch();
}
}
次のスタイルシートtest.cssを使用します。
.test {
-fx-background-color: -fx-base;
}
結果は次のようになります。
Root pane style classes:
root
test
WARNING: com.sun.javafx.css.StyleHelper calculateValue Could not resolve '-fx-base' while resolving lookups for '-fx-background-color' from rule '*.test' in stylesheet test.css
(警告からファイルパスを削除しました)
-fx-baseを解決できないのはなぜですか?それは明らかにcaspian.cssに含まれています...