2012-05-10 165 views
0

我用下面的代碼創建一個JTabbedPane的Swing JTabbedPane如何設置滾動寬度?

new JTabbedPane(JTabbedPane.LEFT,JTabbedPane.SCROLL_TAB_LAYOUT); 

它導致滾動是在寬度上比標籤選擇面積較小的

enter image description here

我怎樣才能使滾動寬度更寬以便它適合選項卡選擇區域?

+0

你是什麼意思?你想讓這兩個箭頭佔據整個寬度? –

+0

@GuillaumePolet是的,箭頭指針也會變寬。 –

+0

爲什麼不用按鈕代替。並調整按鈕上的滾動條點擊。這將隱藏滾動條,並給你的UI更好的外觀 –

回答

4

您可以擴展BasicTabbedPaneUI並實現您自己的按鈕createScrollButton()提供新的首選大小。它看起來像BasicTabbedPaneUI有這些按鈕自己的私人執行 - ScrollableTabButton。您可以創建類似的東西,像下面這樣:

public class ExtendedTabbedPaneUI extends BasicTabbedPaneUI { 

    @Override 
    protected JButton createScrollButton(int direction) { 
     if (direction != SOUTH && direction != NORTH && direction != EAST && 
            direction != WEST) { 
      throw new IllegalArgumentException("Direction must be one of: " + 
               "SOUTH, NORTH, EAST or WEST"); 
     } 

     //return new ScrollableTabButton(direction); 

     return new BasicArrowButton(direction, 
      UIManager.getColor("TabbedPane.selected"), 
      UIManager.getColor("TabbedPane.shadow"), 
      UIManager.getColor("TabbedPane.darkShadow"), 
      UIManager.getColor("TabbedPane.highlight")) { 

      @Override 
      public Dimension getPreferredSize() { 
       int maxWidth = calculateMaxTabWidth(JTabbedPane.LEFT); 
       return new Dimension(maxWidth, super.getPreferredSize().height); 
      } 
     }; 
    } 
} 

並設置新的UI:

tabbedPane.setUI(new ExtendedTabbedPaneUI()); 
+0

對於定製,你也可以擴展** MetalTabbedPaneUI **,重寫** createScrollButton()**如Aqua建議,然後返回一個新的** ScrollableTabButton()* *而不是** BasicArrowButton **,如果你像我一樣有毛病。類** ScrollableTabButton **在[BasicTabbedPaneUI](http://www.docjar.com/html/api/javax/swing/plaf/basic/BasicTabbedPaneUI.java.html)中定義。 – ron190