Swing/TabbedPane のバックアップの現在との差分(No.11)
JTabbedPaneでタブを追加削除
編集者:Terai Atsuhiro~
作成日:2003-11-21
更新日:2024-01-27 (土) 14:37:42
概要
ポップアップメニューを使って、JTabbedPane
にタブを追加、削除します。
概要
ポップアップメニューを使って、JTabbedPaneにタブを追加、削除します。Screenshot
Advertisement
サンプルコード
#spanend
#spanadd
JPopupMenu popup = new JPopupMenu() {
#spanend
@Override public void show(Component c, int x, int y) {
// JDK 1.3:
// closePageAction.setEnabled(
// tabs.getUI().tabForCoordinate(tabs, x, y) >= 0);
closePageAction.setEnabled(tabs.indexAtLocation(x, y) >= 0);
closeAllAction.setEnabled(tabs.getTabCount() > 0);
closeAllButActiveAction.setEnabled(tabs.getTabCount() > 0);
super.show(c, x, y);
}
#spanadd
};
#spanend
#spanadd
View in GitHub: Java, Kotlinサンプルコード
private void showTabPop(MouseEvent e) { JPopupMenu pop = new JPopupMenu(); AbstractAction action = new NewTabAction(MENUITEM_NEWTAB, null); pop.add(action); pop.addSeparator(); action = new ClosePageAction(MENUITEM_CLOSEPAGE, null); int num = tab.getUI().tabForCoordinate(tab, e.getX(), e.getY()); action = new ClosePageAction(MENUITEM_CLOSEPAGE, null); action.setEnabled(num>0?true:false); //boolean flg = false; //for(int i=0;i<tab.getTabCount();i++) { // if(tab.getBoundsAt(i).contains(e.getPoint())) { // flg = true; // break; // } //} //action.setEnabled(flg); pop.add(action); pop.addSeparator(); action = new CloseAllAction(MENUITEM_CLOSEALL, null); pop.add(action); action = new CloseAllButActiveAction(MENUITEM_CLOSEALLBUTACTIVE, null); pop.add(action); pop.show(tab, e.getX(), e.getY()); }
解説
上記のサンプルではJPopupMenu
からJTabbedPane
にタブの追加、削除などが実行可能です。
- サンプルを起動
- jarファイル
- ソース
- 削除メニューは、タブタイトル上で右クリックされた場合のみ選択可
- タブタイトル上でマウスがクリックされたかどうかは、
JDK 1.4
で導入されたJTabbedPane#indexAtLocation(...)
メソッドで判定(タブ以外の場所がクリックされた場合は-1
が返される)
- タブタイトル上でマウスがクリックされたかどうかは、
解説
上記のサンプルでは、ポップアップメニューから、タブの追加、削除などを行うようになっています。参考リンク
JTabbedPane#indexAtLocation(int, int) (Java Platform SE 8) 削除メニューは、タブタイトル上で右クリックされた場合のみ選択可となります。タブタイトル上でマウスがクリックされたかどうかは、getUI()でTabbedPaneUIを継承したクラスを取得し、このtabForCoordinateメソッドで判定しています。コメント
コメント
- スクリーンショットなどを更新 -- aterai