Swing/TabWithCheckBox のバックアップ(No.5)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/TabWithCheckBox へ行く。
- 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
をJTabbedPane#setTabComponentAt(...)
で追加するのではなく、タブタイトルをJLabel
に分離し、チェックアイコンのみのJCheckBox
と合わせてJPanel
に配置して使用しています。このため、タブタイトル文字列をクリックしてもJCheckBox
のチェック状態は変化せず(このJLabel
はクリックイベントを処理しない)、タブの切り替えが実行されます。