2011-10-24 20 views
5

私はJavaFX 2を習得しようとしていますが、私は自分のアプリケーションをスタイル付けしようとしています。私はthis documentコントロールを文書化しようとし、それらに適用されるCSSプロパティを見つけました。未知のセレクタやJavaFXのCSSサポートを使用する必要がある場合は、不完全であるかどうかはわかりません。ここでJavaFX CSSのプロパティとセレクタのベストプラクティス

は例のカップルです:

  • は、どのように私は(そのためのセレクタ、または多分プロパティがありますか?)他のすべての子コンポーネントを着色することなく、TabPaneの後ろのエリアの背景色を変更します
  • 非選択のタブの色を変更するにはどうすればよいですか?

答えて

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(); 
    } 
+0

これはまさに私は(私がcaspian.cssで見つけた.tab-header-backgroundに加えて)探していました。残念ながら、より完全なリファレンスドキュメントはありませんが、それは時間とともに来ると思います。 –

+0

素晴らしい答え。簡単にするために、java.langのタブ部分にアクセスする方法はありますか?私はtabPane.getTabContent.setStyle()の行に沿って何かを考えていますか? –

5
+0

これらの文書はいずれも、これらの問題に対する解決策を持っているようです。 JavaFXのCSSが私のニーズに十分に強力ではないと想定できますか?もしそうなら、私はカスタムスキンを作成する必要がありますか? Oracleのオリジナルのスキン(com.sunパッケージ内)にアクセスすることができなければ、それは多くの作業になると思います。 –

+0

私はあなたが欲しいものを正確にはわかりませんが、これは似ているはずです。 – JimClarke

+1

2番目のドキュメントの指示に従って、JavaFX JarからデフォルトCSSファイルを抽出します。 'jar -xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css' – metasim