タブペイン
コンポーネントの切り替え
タブペインは、複数のコンポーネントを切り替えるための手段を提供します
これを利用すれば、少ない領域に様々な機能を持つパネルなどを共存させることができ
スマートで、より使いやすいユーザーインターフェイスを実現することができます
タブペインは javax.swing.JTabbedPane クラスを使います
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--javax.swing.JComponent
|
+--javax.swing.JTabbedPane
public class JTabbedPane extends JComponent
implements Serializable, Accessible, SwingConstants
このクラスのコンストラクタは次のように定義されています
public JTabbedPane()
public JTabbedPane(int tabPlacement)
public JTabbedPane(int tabPlacement , int tabLayoutPolicy)
デフォルトコンストラクタは、タブが上部に配置されるデフォルトのタブペインを表します
tabPlacement には、タブの位置を示す SwingConstants を指定します
タブの位置は TOP、LEFT、BOTTOM、RIGHT のいずれかを指定することができます
tabLayoutPolicy には、JTabbedPane.WRAP_TAB_LAYOUT または
JTabbedPane.SCROLL_TAB_LAYOUT フィールド定数のいずれかを指定します
これらは、タブが一行(一列)で収まりきらない場合のレイアウトを指定するもので
WRAP_TAB_LAYOUT は複数にし、SCROLL_TAB_LAYOUT はスクロール可能タブにします
コンポーネントは、やはりこれまで同様に add() メソッドを使って追加することができますが
このほかに JTabbedPane.addTab() メソッドも用意されています
この場合は、タブにアイコンやツールチップを指定することができます
public void addTab(
String title , Component component
)
public void addTab(
String title , Icon icon , Component component
)
public void addTab(
String title , Icon icon ,
Component component , String tip
)
これで、新しいタブとコンポーネントを追加することができます
title にはタブのテキスト、component には追加するコンポーネント
icon にはタブに表示するアイコン、tip にはツールチップテキストを指定します
import java.awt.*;
import javax.swing.*;
public class Test extends JApplet {
public void init() {
JTabbedPane tab = new JTabbedPane();
tab.add(new JPanel() , "Panel");
tab.addTab("Button" , new ImageIcon("icon1.jpg") ,
new JButton(new ImageIcon("test.jpg")) , "Kitty");
getContentPane().add(tab);
}
}
これが Swing のタブです
あらゆるコンポーネントを追加できる、非常に柔軟な設計になっています
次のプログラムは、左側にタブを配置したタブペインを表示しています
import java.awt.*;
import javax.swing.*;
public class Test extends JApplet {
public void init() {
JTabbedPane tab = new JTabbedPane(SwingConstants.LEFT);
tab.add(new JPanel() , "Forget me Not");
tab.add(new JPanel() , "Episode of the clovers");
getContentPane().add(tab);
}
}
このように、タブを上下左右に配置させることができます
また、もう一つのコンストラクタを使えば、大量のタブを表示する時に
タブを改行させるか、それともスクロールという形で表示するかを指定できます
import java.awt.*;
import javax.swing.*;
public class Test extends JApplet {
public void init() {
JTabbedPane tab = new JTabbedPane(
SwingConstants.TOP , JTabbedPane.SCROLL_TAB_LAYOUT);
for(int i = 0 ; i < 20 ; i++)
tab.add(new JPanel() , "Tab Panel" + i);
getContentPane().add(tab);
}
}
これは、スクロール可能なタブペインを作成しています
タブが表示しきれなくなった場合はボタンが表示され、タブを移動させることができます
通常、タブの数が固定されている場合は改行で解決するべきで
タブの数がユーザーの操作で変化する場合、スクロールを用いるべきだと考えられます