Swing/FocusAfterClosingCurrentTab のバックアップ(No.6)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/FocusAfterClosingCurrentTab へ行く。
- 1 (2015-11-22 (日) 14:11:48)
- 2 (2017-05-15 (月) 14:56:33)
- 3 (2018-01-27 (土) 12:41:40)
- 4 (2020-01-17 (金) 20:03:25)
- 5 (2021-07-20 (火) 11:04:12)
- 6 (2022-02-20 (日) 09:55:42)
- 7 (2025-01-03 (金) 08:57:02)
- 8 (2025-01-03 (金) 09:01:23)
- 9 (2025-01-03 (金) 09:02:38)
- 10 (2025-01-03 (金) 09:03:21)
- 11 (2025-01-03 (金) 09:04:02)
- category: swing
folder: FocusAfterClosingCurrentTab
title: JTabbedPaneで現在のタブを閉じた後に選択されるタブを変更する
tags: [JTabbedPane]
author: aterai
pubdate: 2015-04-27T00:35:47+09:00
description: JTabbedPaneでタブ選択の履歴を保存し、これを参照して現在選択されているタブを閉じた後に選択するタブを決定します。
image:
概要
JTabbedPane
でタブ選択の履歴を保存し、これを参照して現在選択されているタブを閉じた後に選択するタブを決定します。
Screenshot

Advertisement
サンプルコード
JTabbedPane tabbedPane = new JTabbedPane() {
private final List<Component> history = new ArrayList<Component>(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)
をオーバーライドし、履歴からその前に選択されていたタブを検索して選択状態を設定
- 上記のサンプルでは