2013-05-23 6 views
7

मैं एक वेब एप्लिकेशन के लिए एक जीयूआई विकसित करने की कोशिश कर रहा हूं और मैं टैब हेडर क्षैतिज रखने के बाईं ओर स्थित टैब के साथ एक टैबपेन सेट करना चाहता था। मुझे पहले से ही पता चला है कि टैब को बाईं ओर कैसे रखा जाए, लेकिन कई खोजों के बाद मैं हेडर को दाएं संरेखण में सेट करने में सफल नहीं हुआ। वे अभी भी लंबवत और पढ़ने के लिए मुश्किल है।जावाएफएक्स 2.0 टैबपेन: बाईं ओर टैब और टैब हेडर क्षैतिज रखें

मैं इसे कैसे ठीक कर सकता हूं?

उत्तर

4

इस के लिए एक खुला सुविधा का अनुरोध है: RT-19547 New API to rotate text on tabpane tabs

सुविधा का अनुरोध वर्तमान में खुले, लेकिन कार्यान्वयन के लिए निर्धारित नहीं है। आप फीचर अनुरोध पर वोट दे सकते हैं या टिप्पणी कर सकते हैं और सुविधा में अपनी रुचि पंजीकृत करने के लिए इस स्टैक ओवरफ्लो पोस्ट पर वापस लिंक कर सकते हैं।

इसे स्वयं लागू करने के लिए, आपको एक नई टैबपेन त्वचा या patch the existing TabPane skin बनाना होगा, जो संभवतः मामूली नहीं है।

6

आप टैब और टैब लेबल अनुकूलित करने के लिए सीएसएस का उपयोग कर सकते हैं:

.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"))); 

ध्यान दें कि आपको टैब की चौड़ाई और ऊंचाई सेट करने की आवश्यकता है क्योंकि वे नहीं होंगे स्वचालित रूप से काले।

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

, एक और समाधान, सीएसएस पर मिनट चौड़ाई और ऊंचाई निर्धारित किया है, और 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 ओ Hbox और आपको आवश्यक सभी घटकों, वे टैब ओरिएंटेशन का पालन नहीं करेंगे।

संबंधित मुद्दे