Swing/TabWithCheckBox のバックアップ(No.8)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/TabWithCheckBox へ行く。
- 1 (2016-06-13 (月) 01:28:35)
- 2 (2016-08-15 (月) 15:30:14)
- 3 (2017-09-29 (金) 18:04:20)
- 4 (2019-04-02 (火) 17:26:25)
- 5 (2021-01-12 (火) 10:37:01)
- 6 (2023-07-15 (土) 22:13:20)
- 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: TabWithCheckBox
title: JTabbedPaneのタブにJCheckBoxを追加
tags: [JTabbedPane, JCheckBox, JPanel, JLabel]
author: aterai
pubdate: 2016-06-13T01:27:42+09:00
description: JTabbedPaneのタブ内にクリック可能なJCheckBoxを追加します。
image:
Summary
JTabbedPane
のタブ内にクリック可能なJCheckBox
を追加します。
Screenshot

Advertisement
サンプルコード
JTabbedPane tabs = new JTabbedPane() {
@Override public void addTab(String title, Component content) {
super.addTab(title, content);
JCheckBox check = new JCheckBox();
check.setOpaque(false);
check.setFocusable(false);
JPanel p = new JPanel(new FlowLayout(FlowLayout.LEADING, 0, 0));
p.setOpaque(false);
p.add(check, BorderLayout.WEST);
p.add(new JLabel(title));
setTabComponentAt(getTabCount() - 1, p);
}
};
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JDK 6
で追加されたJTabbedPane
のタブにコンポーネントを配置する機能を使用してJCheckBox
を各タブの内部に追加しています。
- タブタイトル文字列を
JCheckBox#setText(...)
で設定したJCheckBox
をJTabbedPane#setTabComponentAt(...)
で追加するのではなく、タブタイトル用のJLabel
とチェックアイコンのみのJCheckBox
に分割してJPanel
に配置 - タブタイトル文字列用の
JLabel
はクリックイベントを処理しないよう設定 - このためタブタイトルをクリックしても別コンポーネントである
JCheckBox
のチェック状態は変化せずタブの切り替えが実行可能