• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JTabbedPaneにタブを閉じるアイコンを追加
TITLE:JTabbedPaneにタブを閉じるボタンを追加
#navi(../)
*JTabbedPaneにタブを閉じるアイコンを追加 [#j2e3f8ab]
*JTabbedPaneにタブを閉じるボタンを追加 [#j2e3f8ab]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2007-01-29~
更新日:&lastmod;

#contents

**概要 [#n84777ff]
JDK 6 の新機能を使ってJTabbedPaneにタブを閉じるボタンを追加します。

#screenshot

**サンプルコード [#ebac5cc8]
 class CloseButtonTabbedPane extends JTabbedPane {
   private final Icon icon;
   private final Dimension buttonSize;
   public CloseButtonTabbedPane(Icon icon) {
     super();
     //icon = new CloseTabIcon();
     this.icon = icon;
     buttonSize = new Dimension(icon.getIconWidth(), icon.getIconHeight());
   }
   public void addTab(String title, final JComponent content) {
     JPanel tab = new JPanel(new BorderLayout());
     tab.setOpaque(false);
     JLabel label = new JLabel(title);
     label.setBorder(BorderFactory.createEmptyBorder(0,0,0,4));
     JButton button = new JButton(icon);
     button.setPreferredSize(buttonSize);
     button.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         removeTabAt(indexOfComponent(content));
       }
     });
     tab.add(label,  BorderLayout.WEST);
     tab.add(button, BorderLayout.EAST);
     tab.setBorder(BorderFactory.createEmptyBorder(2,1,1,1));
     super.addTab(null, content);
     setTabComponentAt(getTabCount()-1, tab);
   }
 }

-&jnlp;
-&jar;
-&zip;

**解説 [#h1ca2f51]
JDK 6 から追加されたタブにコンポーネントを配置する機能を使って、JButtonをタブに追加しています。

[[他の以前のサンプル>Swing/TabWithCloseIcon]]と比べると、簡単に実装できて、コードも短くなっています。ボタンの見栄えもそんなに悪くないと思います。
[[他の以前のサンプル>Swing/TabWithCloseIcon]]と比べると、簡単に実装できて、コードも短くなっています。マウスがボタン上に来るとちゃんとロールオーバーするし、見栄えもそんなに悪くないと思います。

**参考リンク [#q5a6ecdb]
-[[Java Forums - Adding a close icon to a JTabbedPane tab>http://forum.java.sun.com/thread.jspa?threadID=239270]]
-[[Java Forums - JTabbedPane with close Icons>http://forum.java.sun.com/thread.jspa?threadID=337070]]
-[[Java Forums - Closable Tab in JTabbedPane>http://forum.java.sun.com/thread.jspa?threadID=384894]]
-[[CloseAndMaxTabbedPane: An enhanced JTabbedPane>http://www.javaworld.com/javaworld/jw-09-2004/jw-0906-tabbedpane.html]]
-[[InfoNode - Java Components>http://www.infonode.net/index.html?itp]]
-[[Kirill Grouchnikov's Blog: Spicing up your JTabbedPane - part II>http://weblogs.java.net/blog/kirillcool/archive/2005/12/spicing_up_your_1.html]]
-[[JTabbedPaneでタブを追加削除>Swing/TabbedPane]]
-[[More Enhancements in Java SE 6 (Mustang)>http://java.sun.com/developer/technicalArticles/J2SE/Desktop/mustang/enhancements/?feed=JSC]]
-[[JTabbedPaneにタブを閉じるアイコンを追加>Swing/TabWithCloseIcon]]

**コメント [#q1163cb9]
#comment