我正在尝试学习 JavaFX 2,但我在尝试设计我的应用程序时遇到了很多困难。我发现这个文档试图记录控件和适用于它们的 css 属性。我不知道它是否不完整,我是否应该使用一些未知的选择器或 JavaFX 的 CSS 支持不足以满足我的需求。
这里有几个例子:
- 如何在不为所有其他子组件着色的情况下更改 TabPane 后面区域的背景颜色(是否有一个选择器,或者可能是一个属性?)
- 如何更改未选择标签的颜色?
你有没有尝试过这样的事情?
这使用了一个 ID 选择器,如“Skinning JavaFX Applications with CSS”文档中所示。您也可以取消“#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;
}
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();
}