2013-05-23 10 views
7

Ich versuche, eine GUI für eine Web-Anwendung zu entwickeln, und ich wollte ein TabPane mit Tabs auf der linken Seite gesetzt halten die Tab-Header horizontal. Ich habe bereits gefunden, wie man die Tabs auf der linken Seite platziert, aber nach vielen Suchen war es mir nicht gelungen, die Header in der richtigen Ausrichtung zu setzen. Sie sind immer noch vertikal und schwer zu lesen.JavaFX 2.0 TabPane: Tabs auf der linken Seite und halten Registerkarte Header horizontal

Wie konnte ich das beheben?

Antwort

4

Es gibt eine offene Feature-Anfrage für diesen: RT-19547 New API to rotate text on tabpane tabs

Der Feature-Request ist derzeit offen, aber nicht für die Umsetzung geplant. Sie können für die Feature-Anfrage abstimmen oder Kommentare abgeben und eine Verknüpfung zu diesem StackOverflow-Post herstellen, um Ihr Interesse an der Funktion zu registrieren.

Um dies selbst zu implementieren, müssen Sie eine neue TabPane Skin oder patch the existing TabPane skin erstellen, die wahrscheinlich nicht trivial ist.

6

CSS können Sie die Registerkarten und Registerkarte Etiketten anpassen:

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

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

Sie können die folgende Methode verwenden Sie die Registerkarte Kopf

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

Dann rufen Sie es in Ihrem Code wie folgt zu erstellen :

Beachten Sie, dass Sie die Breite und Höhe der Registerkarten festlegen müssen, da sie nicht s sind automatisch callen.

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

haben eine andere Lösung, die min Breite und Höhe auf CSS gesetzt und ein Grafikelement auf 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, ich erinnere mich dies vor konfrontiert ist, fügen Sie einfach einen StackPane hinzufügen, VBox o Hbox Innerhalb des TabHeaders und aller Komponenten, die Sie benötigen, folgen sie nicht der Tab Ausrichtung.

Verwandte Themen