2012-03-14 94 views
1

我正在使用Swing在Java上使用UI,我想更改JTabbedPane的滚动按钮,因此我使用从延伸MetalTabbedPaneUI创建的新UI(MyTabbedPaneUI)。修改JTabbedPan的滚动按钮

但是,当我创建我的JTabbedPanel有2个选项卡出现,我不希望他们。如果我删除它们,我的滚动条消失。

代码:

public class MyTabbedPaneUI extends MetalTabbedPaneUI{ 

     private Icon southIcon = new ImageIcon(MyTabbedPaneUI.class.getResource("south.png")); 
     private Icon northIcon = new ImageIcon(MyTabbedPaneUI.class.getResource("north.png")); 
     private Icon eastIcon = new ImageIcon(MyTabbedPaneUI.class.getResource("flecheVerte-gauche-20px.png")); 
     private Icon westIcon = new ImageIcon(MyTabbedPaneUI.class.getResource("flecheVerte-droite-20px.png")); 


     public static ComponentUI createUI(JComponent x) { 
      return new MyTabbedPaneUI(); 
     } 


     @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"); 
      } 


      JButton b = new JButton(); 

      //b.setText(""); 
      b.setPreferredSize(new Dimension(eastIcon.getIconWidth(), eastIcon.getIconHeight())); 

      if (direction == SOUTH) { 
       b.setIcon(southIcon); 
      } else if (direction == NORTH) { 
       b.setIcon(northIcon); 
      } else if (direction == WEST) { 
       b.setIcon(westIcon); 
      } else { 
       b.setIcon(eastIcon); 
      } 

      return b; 
     } 

    } 

回答

1

请参阅我的文章澄清

enter image description here

based on code,需要通知添加tb.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);

+0

是的,我想改变与画面这两个按钮,我创建 – Fred37b 2012-03-14 16:27:46

+0

在'BasicTabbedPaneUI'中,参见'private class ScrollableTabButton extends BasicArrow按钮'为一个简单的实现。 – trashgod 2012-03-14 16:45:39

+0

@Fred B对不起,我没有任何运气替换这四个AbstractButtons其图标,你已经找到(我失去了链接)完全定制的BasicTabbedPaneUI,这些AbstractButtons必须接受preferredSize,真正的成功是使用Custom Look and Feel,一些他们完全覆盖BasicTabbedPaneUI – mKorbel 2012-03-14 17:05:33