JavaFX CSS属性和选择器的最佳参考

Bry*_*ung 5 java javafx-2

我正在尝试学习JavaFX 2,但是我一直在努力设计我的应用程序.我发现这个文档试图记录控件和适用于它们的css属性.我不知道它是否不完整,如果我应该使用一些未知的选择器或JavaFX的CSS支持仅仅不足以满足我的需求.

以下是几个例子:

  • 如何更改TabPane后面区域的背景颜色而不为每个其他子组件着色(是否有选择器,或者可能是属性?)
  • 如何更改未选定标签的颜色?

小智 10

你尝试过这样的事吗?

这使用ID选择器,如"使用CSS为JavaFX应用程序设置外观"文档中所示.您也可以不使用"#MyTabPane"选择器并将其应用于所有TabPane.(看起来参考指南中没有讨论.tab和.tab-content-area选择器.我去了jfxrt.jar文件中包含的"caspian.css"文件来查找它们.)

TabExample.css

#MyTabPane .tab {
    -fx-background-color: blue;
}
#MyTabPane .tab:selected {
    -fx-background-color: red;
}

#MyTabPane .tab-content-area {
    -fx-background-color: cyan;
}

#MyTabPane .tab *.tab-label {
    -fx-text-fill: white;
}
Run Code Online (Sandbox Code Playgroud)

TabPaneEx.java

@Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World");
        StackPane root = new StackPane();
        TabPane pane = new TabPane();
        pane.setId(("MyTabPane"));
        Tab tab1 = new Tab("ONE");
        Tab tab2 = new Tab("TWO");
        Tab tab3 = new Tab("THREE");
        pane.getTabs().addAll(tab1,tab2,tab3);
        Scene scene = new Scene(root, 300, 250);
        root.getChildren().add(pane);
        scene.getStylesheets().add(
                this.getClass().getClassLoader().getResource("tabpaneex/TabExample.css").toString());
        primaryStage.setScene(scene);
        primaryStage.show();
    }
Run Code Online (Sandbox Code Playgroud)