2013-01-17 22 views
10

Mam TabPane z kilkoma Tab s. Jeśli wyniki operacji w Tab nie powiodły się, chcę ustawić czerwony kolor na TabFill lub teksturę na mieszaną (dla osób z ślepotą barw). Chcę później przywrócić domyślną wartość Color.Jak programowo ustawić kolor lub teksturę etykiety tabulacji w JavaFX?

Odczytując niektóre z pytań, można ustawić statycznie za pomocą arkusza stylów.

#MyTabPane .tab *.tab-label { 
    -fx-text-fill: white; 
} 

Jak można by uzyskać dostęp do Tablabel i ustaw jego kolor/tekstury dynamicznie?

tab.setStyle("??");

dodane przez ELLTZ

Jak jednokrotnym użyciu inline Style mogą stwierdzono powyżej, aby zmienić Paint zarówno Label z klasą stylu tab-label i Button (StackPane) Również tab-close-button

potrzebne przykłady kodu:

Odpowiedz

11

ustawień grafiki i stylizacji to załatwiło sprawę dla mnie:

Tab tabB = new Tab(); 
tabB.setText(""); 
tabPane.getTabs().add(tabB); 
tabB.setStyle("-fx-border-color:red; -fx-background-color: blue;"); 
tabB.setGraphic(new Label("Tab B")); 
tabB.getGraphic().setStyle("-fx-text-fill: #c4d8de;"); 
+0

Dzięki. Niespodziewanie, jeśli zrobisz tab1.setGraphic (imageView), a następnie tab2.setGraphic (imageView), grafika zmieni się z tab1 na tab2. Tylko jedna karta ma grafikę. – likejiujitsu

+1

Nie jest to zaskakujące, ponieważ węzeł zawsze może być tylko jeden raz w SceneGraph. "Grafika" to ogólny Węzeł w SceneGraph jak każdy Węzeł. – Sebastian

+1

, co sprawia, że ​​zastanawiasz się, dlaczego nazywają to "wykres" w pierwszej kolejności. Ale cóż, tak, to prawda, więc nie jest zaskakujące, że ImageView może mieć tylko jednego rodzica. –