6

私は JavaFX 2 を学ぼうとしていますが、アプリケーションのスタイルを整えるのに苦労しています。コントロールとそれらに適用される css プロパティを文書化しようとするこのドキュメントを見つけました。不完全なのか、不明なセレクターを使用する必要があるのか​​ 、それとも JavaFX の CSS サポートが私のニーズに対して十分に強力ではないのか、わかりません。

以下にいくつかの例を示します。

  • 他のすべての子コンポーネントを色付けせずに、TabPane の背後の領域の背景色を変更するにはどうすればよいですか (そのためのセレクター、またはおそらくプロパティはありますか?)
  • 選択されていないタブの色を変更するにはどうすればよいですか?
4

2 に答える 2

10

このようなことを試しましたか?

これは、「CSSを使用したJavaFXアプリケーションのスキニング」ドキュメントに示されているIDセレクターを使用します。「#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();
    }
于 2011-11-05T15:17:36.187 に答える