JTabbedPaneのタブを固定する
Total: 4563
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JTabbedPane
にJPopupMenu
を追加して、指定したタブのタイトルと位置を変更し、タブの固定を行います。
Screenshot
Advertisement
サンプルコード
pinTabMenuItem = new JCheckBoxMenuItem(new AbstractAction("pin tab") {
@Override public void actionPerformed(ActionEvent e) {
JTabbedPane t = (JTabbedPane) getInvoker();
JCheckBoxMenuItem check = (JCheckBoxMenuItem) e.getSource();
int idx = t.getSelectedIndex();
Component cmp = t.getComponentAt(idx);
Component tab = t.getTabComponentAt(idx);
Icon icon = t.getIconAt(idx);
String tip = t.getToolTipTextAt(idx);
boolean flg = t.isEnabledAt(idx);
int i;
if (check.isSelected()) {
for (i = 0; i < idx; i++) {
String s = t.getTitleAt(i);
if (s == null || s.isEmpty()) {
continue;
}
break;
}
} else {
for (i = t.getTabCount() - 1; i > idx; i--) {
String s = t.getTitleAt(i);
if (s != null && !s.isEmpty()) {
continue;
}
break;
}
}
t.remove(idx);
t.insertTab(check.isSelected() ? "" : tip, icon, cmp, tip, i);
t.setTabComponentAt(i, tab);
t.setEnabledAt(i, flg);
if (flg) {
t.setSelectedIndex(i);
}
}
});
View in GitHub: Java, Kotlin解説
- タブを固定
- タブタイトルを空にする
- タブの位置を最も左に存在する未固定タブの左隣りに移動
- 固定したタブは削除不可に設定
- タブの固定を解除
- タブタイトルを
TooltipText
から復元する - タブの位置を最も左に存在する未固定タブの右隣りに移動
- タブタイトルを
TabPlacement
のLEFT
、RIGHT
は考慮していない