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 中...