JTabbedPaneで現在のタブを閉じた後に選択されるタブを変更する
Total: 3315
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JTabbedPane
でタブ選択の履歴を保存し、これを参照して現在選択されているタブを閉じた後に選択するタブを決定します。
Screenshot
Advertisement
サンプルコード
JTabbedPane tabbedPane = new JTabbedPane() {
private final List<Component> history = new ArrayList<>(5);
@Override public void setSelectedIndex(int index) {
super.setSelectedIndex(index);
Component component = getComponentAt(index);
history.remove(component);
history.add(0, component);
}
@Override public void removeTabAt(int index) {
Component component = getComponentAt(index);
super.removeTabAt(index);
history.remove(component);
if (!history.isEmpty()) {
setSelectedComponent(history.get(0));
}
}
};
View in GitHub: Java, Kotlin解説
- デフォルト(右隣りのタブに移動)
JTabbedPane
で現在選択されているタブをJTabbedPane#removeTabAt(int)
で閉じた場合、その後に選択されるタブは右隣(縦の場合は下)のタブで固定- 一番最後のタブが選択されていた場合は
JTabbedPane#getTabCount() - 1
- 一番最後のタブが選択されていた場合は
- 以前選択されていたタブに移動
- 上記のサンプルでは
JTabbedPane#setSelectedIndex(int)
をオーバーライドして選択の履歴を保存 JTabbedPane#removeTabAt(int)
をオーバーライドし、履歴からその前に選択されていたタブを検索して選択状態を設定
- 上記のサンプルでは