2013-05-23 3 views
7

Sto provando a sviluppare una GUI per un'applicazione Web e volevo impostare un TabPane con le schede posizionate a sinistra mantenendo le intestazioni delle schede orizzontali. Ho già trovato come posizionare le schede a sinistra, ma dopo molte ricerche non sono riuscito a impostare le intestazioni nell'allineamento corretto. Sono ancora verticali e difficili da leggere.JavaPX 2.0 TabPane: schede a sinistra e mantenere l'intestazione di tabulazione orizzontale

Come è stato risolto?

risposta

4

C'è una richiesta di funzionalità aperto per questo: RT-19547 New API to rotate text on tabpane tabs

La richiesta funzione è attualmente aperta, ma non in programma per l'attuazione. Puoi votare o commentare la richiesta di funzionalità e ricollegarti a questo post StackOverflow per registrare il tuo interesse per la funzione.

Per implementare questo da soli, è necessario creare un nuovo skin TabPane o patch the existing TabPane skin, che non è probabilmente banale.

6

È possibile utilizzare i CSS per personalizzare le schede e scheda Etichette:

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

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

È possibile utilizzare il seguente metodo per creare l'intestazione scheda

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

Poi lo chiamano nel codice come il seguente :

Nota che è necessario impostare la larghezza e l'altezza delle schede in quanto non saranno Cale automaticamente.

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

hanno un'altra soluzione, impostare la larghezza min e l'altezza su CSS, e aggiungere un elemento grafico su 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 Mi ricordo che ho affrontato questo prima, è sufficiente aggiungere uno StackPane, VBox o Hbox all'interno di tabHeader e tutti i componenti di cui potresti aver bisogno, non seguiranno la scheda Orientamento.