JTabbedPaneにタブを閉じるアイコンを追加
Total: 12549
, Today: 2
, Yesterday: 3
Posted by aterai at
Last-modified:
概要
JTabbedPane
にタブを閉じるためのアイコンやボタンを追加します。以下の参考リンクから引用したコードをほぼそのまま引用して紹介しています。
Screenshot
Advertisement
サンプルコード
public class JTabbedPaneWithCloseIcons extends JTabbedPane {
public JTabbedPaneWithCloseIcons() {
super();
addMouseListener(new MouseAdapter() {
@Override public void mouseClicked(MouseEvent e) {
tabClicked(e);
}
});
}
public void addTab(String title, Component component) {
this.addTab(title, component, null);
}
public void addTab(String title, Component component, Icon extraIcon) {
super.addTab(title, new CloseTabIcon(extraIcon), component);
}
private void tabClicked(MouseEvent e) {
int index = getUI().tabForCoordinate(this, e.getX(), e.getY());
if (index < 0) {
return;
}
Rectangle rect = ((CloseTabIcon) getIconAt(index)).getBounds();
if (rect.contains(e.getX(), e.getY())) {
removeTabAt(index);
}
}
}
View in GitHub: Java, Kotlin解説
- 上:
JTabbedPaneWithCloseButton
TabbedPaneLayout
を使用してボタンをタブの中にレイアウト
- 中:
JTabbedPaneWithCloseIcons
JTabbedPane
のタブにアイコンを表示する機能を利用JTabbedPane
にMouseListener
を設定し、タブのクリックされた位置がアイコン上であればそのタブを閉じる
- 下:
CloseableTabbedPane
JTabbedPaneWithCloseIcons
の改良版- アイコンの位置、マウスがアイコン上に来たときの描画機能などを追加
JDK 1.6.0
では、JTabbedPane
のタブ部分にJTabbedPane#setTabComponentAt(Component)メソッドでComponent
を設定可能になったので、上記のサンプルより手軽に同様の機能を実装できるようになりました。
参考リンク
- Swing (Archive) - Adding a close icon to a JTabbedPane tab
- Swing - JTabbedPane with close Icons
- Swing (Archive) - Closable Tab in JTabbedPane
- CloseAndMaxTabbedPane: An enhanced JTabbedPane
- InfoNode - Java Components
- Kirill Grouchnikov's Blog: Spicing up your JTabbedPane - part II
- JTabbedPaneでタブを追加削除
- More Enhancements in Java SE 6