2011-10-24 25 views
5

Estoy tratando de aprender JavaFX 2, pero he estado tropezando mucho tratando de diseñar mi aplicación. He encontrado this document que intenta documentar los controles y las propiedades CSS que se aplican a ellos. No puedo decir si está incompleto, si debería usar algunos selectores desconocidos o el soporte CSS de JavaFX simplemente no es lo suficientemente potente para mis necesidades.Mejor referencia para las propiedades y selectores de JavaFX CSS

Aquí hay un par de ejemplos: (¿hay un selector para eso, o tal vez una propiedad)

  • ¿Cómo iba a cambiar el color de fondo del área detrás de una TabPane sin colorear todos los demás componentes niño
  • ¿Cómo cambiaría el color de las pestañas no seleccionadas?

Respuesta

10

Ha intentado algo como esto?

Esto utiliza un selector de ID como se muestra en el documento "Desvelar aplicaciones JavaFX con CSS". También puede dejar el selector "#MyTabPane" y aplicarlo a todos los TabPane. (Parece que los selectores de área .tab y .tab-content-area no se discuten en la guía de referencia. Fui al archivo "caspian.css" contenido en el archivo jfxrt.jar para encontrarlos).

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

Esto es exactamente lo que Estaba buscando (además de .tab-header-background, que también encontré en caspian.css). Es una pena que no haya un documento de referencia más completo, pero supongo que llegará con el tiempo. –

+0

Gran respuesta. Para simplificar, ¿hay alguna manera de acceder a las partes de la pestaña desde java.'? Estoy pensando en algo parecido a tabPane.getTabContent.setStyle()? –

5
+0

Ninguno de estos documentos parece tener soluciones para estos problemas. ¿Puedo asumir que el CSS de JavaFX no es lo suficientemente poderoso para mis necesidades? Si es así, ¿necesito crear una máscara personalizada? Sin acceso a las máscaras originales de Oracle (en el paquete com.sun), me imagino que eso sería mucho trabajo. –

+0

No estoy seguro exactamente de lo que quiere, pero esto debería ser similar. – JimClarke

+1

Tenga en cuenta las instrucciones del segundo documento para extraer el archivo CSS predeterminado de JavaFX Jar: 'jar -xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css' – metasim

Cuestiones relacionadas