2013-05-23 10 views
7

Próbuję utworzyć GUI dla aplikacji sieciowej i chciałem ustawić TabPane z zakładkami umieszczonymi po lewej stronie utrzymując nagłówki tabulacji poziomo. Znalazłem już sposób umieszczania zakładek po lewej stronie, ale po wielu wyszukiwaniach nie udało mi się ustawić nagłówków we właściwym wyrównaniu. Nadal są pionowe i trudne do odczytania.JavaFX 2.0 TabPane: Tabulatory po lewej stronie i nagłówek tabulatora poziome

Jak mogłem to naprawić?

Odpowiedz

4

Jest otwarty na to żądanie cecha: RT-19547 New API to rotate text on tabpane tabs

Żądanie funkcja jest obecnie otwarte, ale nie zaplanowano do realizacji. Możesz głosować lub komentować prośbę o funkcję i odsyłać do tego posta StackOverflow, aby zarejestrować swoje zainteresowanie tą funkcją.

Aby zaimplementować to samodzielnie, musisz utworzyć nową skórkę TabPane lub patch the existing TabPane skin, co prawdopodobnie nie jest banalne.

6

Można użyć CSS, aby dostosować kart i karcie Etykiety:

.tab *.tab-label { 
    -fx-rotate: 90; 
} 

.tab { 
    -fx-padding: 3em 0.5em 3em 0.5em; 
} 
1

Możesz skorzystać z następujących metod, aby utworzyć nagłówek Wypustka

private StackPane createTabHeader(String text, Node graphics){ 
     return new StackPane(new Group(new Label(text, graphics))); 
} 

Następnie nazwać to w kodzie jak poniżej :

Tab tab = new Tab(); 
tab.setGraphic(createTabHeader("TEXT", new ImageView("IMAGE_PATH"))); 

Pamiętaj, że musisz ustawić szerokość i wysokość zakładek, ponieważ nie będą one automatycznie cale.

TabPane tabPane = new TabPane(tab); 
tabPane.setSide(Side.LEFT); 
tabPane.setTabMinWidth(50); 
tabPane.setTabMaxWidth(50); 
tabPane.setTabMinHeight(200); 
tabPane.setTabMaxHeight(200); 
0
// Firstly 
tabPane.setSide(Side.LEFT); 
tabPane.setRotateGraphic(true);   

Label l = new Label("Titel Tab1"); 
l.setRotate(90); 
StackPane stp = new StackPane(new Group(l)); 
stp.setRotate(90); 
tab1.setGraphic(stp); 

l = new Label("Titel Tab2"); 
l.setRotate(90); 
stp = new StackPane(new Group(l)); 
stp.setRotate(90); 
tab2.setGraphic(stp); 

tabPane.setTabMinHeight(100); 
tabPane.setTabMaxHeight(100); 
0

mieć inne rozwiązanie, ustawić szerokość min i wysokość na CSS i dodać element graficzny na fxml

-fx-tab-min-width:30;  
-fx-tab-max-width:30;  
-fx-tab-min-height:150;  
-fx-tab-max-height:150; 

<Tab closable="false"> 
      <graphic> 
       <Pane prefHeight="76.0" prefWidth="30.0"> 
       <children> 
        <Label layoutX="-35.0" layoutY="23.0" prefHeight="30.0" prefWidth="130.0" text="User"> 
         <font> 
          <Font name="SansSerif Regular" size="14.0" /> 
         </font></Label> 
       </children> 
       </Pane> 
      </graphic> 
     </Tab> 
0

Oh Pamiętam, że w obliczu tego wcześniej, po prostu dodaj StackPane, VBox o Hbox wewnątrz tabHeader i wszystkich składników, których możesz potrzebować, nie będą przestrzegać zakładki Orientation.

Powiązane problemy