タイトルを指定してタブを追加する

広告

コンストラクタでベースとなる部分を作成したら必要な数のタブを追加していきます。タブにはタブに表示されるタイトルとタブが選択された時に領域に表示されるコンポーネントを指定して追加します。タブを追加するにはJTabbpedPaneクラスで用意されている「addTab」メソッドを使います。

title で表される (アイコンなし) component を追加します。insertTab のカ
バーメソッドです。

パラメータ:
  title - このタブで表示されるタイトル
  component - このタブをクリックしたときに表示されるコンポーネント

1番目の引数にタブに表示されるタイトルをString型の値で指定します。また2番目の引数にタブが選択された時に表示されるコンポーネントを指定します。このメソッドを使った場合には現時点で追加済みのタブの一番最後に新しくタブが追加されます。

指定できるコンポーネントは1つだけです。複数のコンポーネントを表示させたい場合には、JPanelクラスなどのコンテナを利用して複数のコンポーネントを配置したJPanelクラスのオブジェクトを作成しタブにはJPanelクラスのオブジェクトを指定するようにして下さい。

実際の使い方は次のようになります。

JTabbedPane tabbedpane = new JTabbedPane();
tabbedpane.addTab("title", new JButton("button"));

タイトルを指定する

一度作成されたタブのタイトルを後から指定する方法を確認します。JTabbpedPaneクラスで用意されている「setTitleAt」メソッドを使います。

index のタイトルを title に設定します。 null にすることもできます。この
タブのタブコンポーネントが指定されなかった場合、タイトルは表示されませ
ん。そのインデックスにタブがない場合は内部例外がスローされます。

パラメータ:
  index - タイトルを設定するタブのインデックス
  title - タブに表示されるタイトル 
例外: 
  IndexOutOfBoundsException - インデックスが範囲外の場合
     (index < 0 || index >= タブの総数)

1番目の引数にタイトルを設定したいタブのインデックスを指定します。インデックスはタブが追加された順に割り振られた番号で最初のタブのインデックスは「0」となります。存在しないインデックスを指定すると例外が発生します。2番目の引数には新しく設定したいタブのタイトルをString型の値で指定します。

実際の使い方は次のようになります。

JTabbedPane tabbedpane = new JTabbedPane();
tabbedpane.addTab("title1", new JButton("button1"));
tabbedpane.addTab("title2", new JButton("button2"));

tabbedpane.setTitleAt(0, "newtitle");

サンプルプログラム

では簡単なサンプルを作成して試してみます。

JTabbedPaneTest2.java

import javax.swing.*;
import java.awt.BorderLayout;

public class JTabbedPaneTest2 extends JFrame{

  public static void main(String[] args){
    JTabbedPaneTest2 frame = new JTabbedPaneTest2();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  JTabbedPaneTest2(){
    JTabbedPane tabbedpane = new JTabbedPane();

    JPanel tabPanel1 = new JPanel();
    tabPanel1.add(new JButton("button1"));

    JPanel tabPanel2 = new JPanel();
    tabPanel2.add(new JLabel("Name:"));
    tabPanel2.add(new JTextField("", 10));

    tabbedpane.addTab("tab1", tabPanel1);
    tabbedpane.addTab("tab2", tabPanel2);

    getContentPane().add(tabbedpane, BorderLayout.CENTER);
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

JTabbedPaneのサンプル

今回は上部にタブが表示されるコンストラクタを使っています。そしてタブを2つ追加してあります。それでは上部にある「tab2」と書かれたタブをクリックして下さい。

JTabbedPaneのサンプル

タブが切り替わり対応するコンポーネントが表示されます。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)