Swing でのタブ表示 JTabbedPane の使い方

ここでは Swing でのタブ表示の方法について説明します。

たくさんの情報を整理する方法としてタブを用いた GUI は直感的にわかりやすく、 迷うことがほぼ無い UI として知られています。

Swing では JTabbedPane で簡単に実装することができます。

ここでは次のような画面のタブ表示 UI を作成してみましょう。

タブ表示は JTabbedPane をコンテナとして、 そこに addTab メソッドで JPanel を追加するだけです。

次の例では JPanel から派生した Tab1 クラスと Tab2 クラスを作り、 それを JTabbedPane のオブジェクトに追加しています。

package com.keicode.java.testapp;

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

@SuppressWarnings("serial")
public class TabTest1 extends JFrame {

	JTabbedPane tabbedPane;
	
	public TabTest1() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(300, 150);
		
		// JTabbedPane
		tabbedPane = new JTabbedPane();
		add(tabbedPane);
		
		// Tab 1
		JPanel tab1 = new Tab1();
		tabbedPane.addTab("Tab 1", tab1);

		// Tab 2
		JPanel tab2 = new Tab2();
		tabbedPane.addTab("Tab 2", tab2);

	}
	
	// Tab 1
	class Tab1 extends JPanel {
		public Tab1() {
			JLabel label1 = new JLabel("Hello, world!");
			add(label1);
		}
	}
	
	// Tab 2
	class Tab2 extends JPanel {
		public Tab2() {
			JLabel label1 = new JLabel("This is another tab.");
			add(label1);
		}
	}

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			@Override
			public void run() {
				TabTest1 app = new TabTest1();
				app.setVisible(true);
			}			
		});

	}
}

もしタブとして表示されるパネルから、コンテナとなる JTabbedPane にアクセスしたい場合は、 例えばタブパネルクラスのコンストラクタでコンテナのオブジェクトを受け取り保持しておく等すればよいでしょう。

タブ切り替え時のイベントを拾いたい場合は「JTabbedPane のタブ切り替えイベント」をみてください。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Java 入門