2011-10-24 6 views
5

J'essaie d'apprendre JavaFX 2, mais j'ai beaucoup essayé de styler mon application. J'ai trouvé this document qui essaye de documenter des commandes et les propriétés de CSS qui s'appliquent à eux. Je ne sais pas si c'est incomplet, si je devais utiliser des sélecteurs inconnus ou si le support CSS de JavaFX n'est pas assez puissant pour mes besoins.Meilleure référence pour les propriétés CSS et les sélecteurs JavaFX

Voici quelques exemples: (est-il un sélecteur pour cela, ou peut-être une propriété)

  • Comment puis-je changer la couleur d'arrière-plan pour la zone derrière un TabPane sans colorant tous les autres composants de l'enfant
  • Comment changer la couleur des onglets non sélectionnés?

Répondre

10

Avez-vous essayé quelque chose comme ça?

Ceci utilise un sélecteur d'ID comme indiqué dans le document "Habillage d'applications JavaFX avec CSS". Vous pouvez également désactiver le sélecteur "#MyTabPane" et l'appliquer à tous les TabPane. (Il semble que les sélecteurs .tab et .tab-content-area ne soient pas abordés dans le guide de référence.J'ai visité le fichier "caspian.css" contenu dans le fichier jfxrt.jar pour les trouver.)

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

C'est exactement ce que Je cherchais (en plus de .tab-header-background, que j'ai aussi trouvé dans caspian.css). C'est dommage qu'il n'y ait pas de document de référence plus complet, mais je suppose que cela viendra avec du temps. –

+0

Bonne réponse. Pour plus de simplicité, existe-t-il un moyen d'accéder aux parties de l'onglet à partir de Java? Je pense quelque chose dans le style de tabPane.getTabContent.setStyle()? –

5
+0

Aucun de ces documents semble avoir des solutions pour ces problèmes. Puis-je supposer que le CSS de JavaFX n'est pas assez puissant pour mes besoins? Si oui, dois-je créer un habillage personnalisé? Sans l'accès aux skins d'origine d'Oracle (dans le paquet com.sun), j'imagine que cela demanderait beaucoup de travail. –

+0

Je ne sais pas exactement ce que vous voulez, mais cela devrait être similaire. – JimClarke

+1

Notez l'instruction dans le second document pour extraire le fichier CSS par défaut du fichier JavaFX Jar: 'jar -xf jfxrt.jar com/dim/javafx/scene/control/skin/caspian/caspian.css' – metasim

Questions connexes