Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで単一のJTabbedPaneに複数のタブを挿入する方法

JTabbedPaneとは

  • JTabbedPaneJComponentクラスを拡張したコンポーネントで、一度に表示できるタブは1つだけです。
  • 各タブには1つのコンポーネントが関連付けられており、そのタブが選択されると対応するコンポーネントが表示されます。
  • JTabbedPaneは、タブが選択された際にChangeListenerインターフェースを通じてイベントを発生させることができます。
  • さらに、1つのJTabbedPaneに複数のタブを挿入することも可能です。JTabbedPaneの主なメソッドには、addTab()fireStateChanged()getTabPlacement()setSelectedIndex()getTabCount()などがあります。

コード例

以下のサンプルでは、再帰処理を使ってネスト(入れ子)構造のタブペインを生成し、各タブの表示位置(上・右・下・左)を順番に切り替えています。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class NestedJTabbedPaneTest extends JFrame {
    public NestedJTabbedPaneTest() {
        setTitle("Nested JTabbedPane test");
        setLayout(new BorderLayout());
        JTabbedPane tabbedPane = new JTabbedPane();
        add(BorderLayout.CENTER, tabbedPane);
        createNestedTab(tabbedPane, 1);
        setSize(375, 250);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }
    protected void createNestedTab(JTabbedPane jtp, int count) {
        if (count > 5) return;
        JTabbedPane tp = new JTabbedPane();
        tp.setTabPlacement(getNextOrientation(jtp.getTabPlacement()));
        jtp.addTab("Tab #" + count, tp);
        createNestedTab(tp, count+1);
    }
    private int getNextOrientation(int tabPlacement) {
        if (tabPlacement == JTabbedPane.TOP) return JTabbedPane.RIGHT;
        if (tabPlacement == JTabbedPane.RIGHT) return JTabbedPane.BOTTOM;
        if (tabPlacement == JTabbedPane.BOTTOM) return JTabbedPane.LEFT;
        else return JTabbedPane.TOP;
    }
    public static void main(String []args) {
        new NestedJTabbedPaneTest();
    }
}

コードのポイント

  • createNestedTab()メソッドが自分自身を呼び出すことで、5階層までのネストしたタブを自動的に生成します。
  • getNextOrientation()メソッドにより、タブの配置位置が「上→右→下→左」の順にローテーションされます。
  • addTab()メソッドの第1引数にタブ名、第2引数に表示するコンポーネントを渡します。

実行結果

Javaで単一のJTabbedPaneに複数のタブを挿入する方法

このように、JTabbedPaneを入れ子にすることで、1つのウィンドウ内に多階層のタブ構造を実現できます。設定画面やカテゴリ分けされた情報表示など、多くの項目を整理して表示したい場合に非常に便利な手法です。

  1. JavaのJMenuからJTabbedPaneに新しいタブを追加する方法

    JTabbedPaneとはJTabbedPaneは、JComponentクラスを継承したSwingコンポーネントの一つで、複数のパネルをタブ形式で簡単に切り替えられるようにするUI部品です。各タブには1つのコンポーネントが関連付けられており、そのタブが選択されると対応するコンポーネントが表示されます。JTabbedPaneは、タブが選択されたタイミングでChangeListenerインターフェースを通じてイベントを発生させることができます。JTabbedPaneの主なメソッドには、add()、addTab()、fireStateChanged()、createChangeListener()、

  2. JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説

    JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー