2013-05-23 2 views
7

Я пытаюсь разработать графический интерфейс для веб-приложения, и я хотел установить TabPane с вкладками, расположенными слева, при условии, что заголовки вкладок горизонтальны. Я уже нашел, как разместить вкладки слева, но после многих поисков мне не удалось установить заголовки в правильном выравнивании. Они по-прежнему вертикальны и трудны для чтения.Панель вкладок JavaFX 2.0: вкладки слева и заголовок заголовка горизонтальный

Как я мог исправить это?

ответ

4

Существует запрос открытой функции для этого: RT-19547 New API to rotate text on tabpane tabs

запрос Функции в настоящее время открыт, но не планируется к реализации. Вы можете проголосовать или прокомментировать запрос функции и вернуться к этой записи StackOverflow, чтобы зарегистрировать свой интерес к этой функции.

Чтобы реализовать это самостоятельно, вам нужно будет создать новый скин TabPane или patch the existing TabPane skin, что, вероятно, не является тривиальным.

6

Вы можете использовать CSS, чтобы настроить вкладки и вкладки этикетки:

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

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

Вы можете использовать следующий метод для создания заголовка вкладки

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

Затем вызовите его в коде, как следующее :

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

Обратите внимание, что вам необходимо установить ширину и высоту вкладок, так как они не будут 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

есть другое решение, установить ширину мин и высоту на CSS, а также добавить графический элемент на 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

О я помню, я столкнулся с этим раньше, просто добавьте StackPane, VBox o Hbox внутри tabHeader и всех компонентов, которые могут вам понадобиться, они не будут следовать указанию Orientation.

Смежные вопросы