Swing/TabWithCheckBox のバックアップ(No.6)
- バックアップ一覧
 - 差分 を表示
 - 現在との差分 を表示
 - 現在との差分 - 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)
 - 12 (2025-06-19 (木) 12:41:37)
 - 13 (2025-06-19 (木) 12:43:47)
 
 
- 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: 

 
概要
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のチェック状態は変化せずタブの切り替えが実行される