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

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

JTabbedPaneとは

JTabbedPaneは、JComponentクラスを継承したSwingコンポーネントの一つで、複数のパネルをタブ形式で簡単に切り替えられるようにするUI部品です。

  • 各タブには1つのコンポーネントが関連付けられており、そのタブが選択されると対応するコンポーネントが表示されます。
  • JTabbedPaneは、タブが選択されたタイミングでChangeListenerインターフェースを通じてイベントを発生させることができます。
  • JTabbedPaneの主なメソッドには、add()、addTab()、fireStateChanged()、createChangeListener()、setSelectedIndex()、getTabCount()などがあります。

実装例:メニュー操作でタブを動的に追加する

以下のサンプルコードでは、メニューバーの「Create new tab」項目をクリックすると、JTabbedPaneに新しいタブが動的に追加される仕組みを実装しています。ウィンドウ起動時にも最初のタブが1つ作成されます。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class JTabbedPaneTest extends JFrame implements ActionListener {
    JTabbedPane tabbedPane;
    int ntabs = 0;
    public JTabbedPaneTest() {
        getContentPane().setLayout(new BorderLayout());
        tabbedPane = new JTabbedPane();
        createTab();
        getContentPane().add(BorderLayout.CENTER, tabbedPane);
        setJMenuBar(createMenuBar());
        tabbedPane.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent ce) {
                System.out.println("Tab " + (tabbedPane.getSelectedIndex() + 1) + " is selected");
            }
        });
        setTitle("JTabbedPane Test");
        setLocationRelativeTo(null);
        setSize(new Dimension(350, 275));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
    protected JMenuBar createMenuBar() {
        JMenuBar menuBar = new JMenuBar();
        JMenu menu = new JMenu("JTabbedPane");
        JMenuItem menuItem = new JMenuItem("Create new tab");
        menuItem.addActionListener(this);
        menu.add(menuItem);
        menuBar.add(menu);
        return menuBar;
    }
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("Create new tab")) {
            createTab();
        }
    }
    protected void createTab() {
        ntabs++;
        tabbedPane.addTab("Tab #" + ntabs, new JLabel("Tab #" + ntabs));
    }
    public static void main(String []args) {
        new JTabbedPaneTest();
    }
}

コードのポイント

  • createMenuBar()メソッドでメニューバーと「Create new tab」メニュー項目を生成し、ActionListenerとして自身(this)を登録しています。
  • actionPerformed()メソッド内でアクションコマンドを判定し、該当する場合はcreateTab()を呼び出します。
  • createTab()メソッドではカウンターをインクリメントしながらaddTab()を使い、「Tab #1」「Tab #2」のように連番付きのタイトルとラベルを持つタブを追加していきます。
  • ChangeListenerを登録することで、タブが切り替わるたびに選択中のタブ番号がコンソールへ出力され、イベント処理の流れも確認できます。

実行結果

プログラムを実行し、メニューから「Create new tab」を選択するたびに、以下のように新しいタブが順次追加されていきます。

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

  1. Java SwingのJCheckBoxで一度に1つの項目だけを選択する方法(ButtonGroupの使い方)

    JCheckBoxとは JCheckBoxはJToggleButtonを継承したSwingコンポーネントで、チェック済みか未チェックのいずれかの状態を持つ小さなボックスとして画面に表示されます。 ユーザーがJCheckBoxをクリックすると、チェック状態と未チェック状態が自動的に切り替わります。 チェックボックスの状態が変化すると、ActionListenerやItemListenerが発生し、イベント処理を行うことができます。 isSelected()メソッドを使うと、そのチェックボックスが選択されているかどうかを判定できます。 デフォルトの状態では、複数のチェックボックスを同時に選択す

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

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