スプリットペイン


コンポーネントの分割

十分に抽象化され、柔軟な設計思想を持ったソフトウェアであれば
コンポーネントサイズがユーザーによって変更されても問題はないでしょう
開発者は、ユーザーに、自由にコンポーネントのサイズを変更し
使いやすい形にユーザーインターフェイスを整えさせる手段を与えたいかもしれません
熟練のシステム管理者であれば、一定の権利を与えられた方が喜ぶことでしょう

このような設計を行う場合、スプリットペインを使うと便利です
スプリットペインは二つのコンポーネントを分割して管理するコンテナです
これは javax.swing.JSplitPane() クラスで実装されています
java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JSplitPane

public class JSplitPane 
	extends JComponent implements Accessible
このクラスのコンストラクタは次のようなものがあります
public JSplitPane()
public JSplitPane(int newOrientation)

public JSplitPane(
	int newOrientation , boolean newContinuousLayout
)
public JSplitPane(
	int newOrientation ,
	Component newLeftComponent , Component newRightComponent
)
public JSplitPane(
	int newOrientation , boolean newContinuousLayout ,
	Component newLeftComponent , Component newRightComponent
)
newOrientation はスプリットの分割方向を指定します
ここには、水平分割を表す JSplitPane.HORIZONTAL_SPLIT か
垂直分割を表す JSplitPane.VERTICAL_SPLIT フィールド定数を指定できます
この値は、デフォルトで垂直分割になっています

newContinuousLayout にはディバイダの位置が変更されるときに
コンポーネントが連続して再描画されるようにする場合は true を指定します
デフォルトでは再描画を待機する false が指定されています

newLeftComponent には、分割された左、または上のコンポーネントを
newRightComponent には、分割された右、または下のコンポーネントを指定します
デフォルトでは、ボタンコンポーネントが設定されています
import java.awt.*;
import javax.swing.*;

public class Test extends JApplet {
	public void init() {
		JSplitPane split1 = new JSplitPane();
		JSplitPane split2 = new JSplitPane(
			JSplitPane.VERTICAL_SPLIT ,
			new JButton(new ImageIcon("icon1.jpg")) ,
			new JButton("Episode of the clovers")
		);
		JSplitPane split3 = new JSplitPane(
			JSplitPane.VERTICAL_SPLIT , split1 , split2
		);

		getContentPane().add(split3);
	}
}


このプログラムでは、三つのスプリットを使っています
左ボタンと右ボタンというテキストを持つボタンを含むスプリット
アイコンと Episode of the clovers というテキストを持つボタンを含むスプリット
そして、この二つのスプリットを含むスプリットで構成されているのです

左、または上のコンポーネントは JSplitPane.setLeftComponent() メソッド
もしくは JSplitPane.setTopComponent() メソッドで追加し
右、または下には JSplitPane.setRightComponent() メソッド
もしくは JSplitPane.setBottomComponent() メソッドで追加できます
もちろん、これらに対応した get_() メソッドも存在します

public void setLeftComponent(Component comp)
public void setTopComponent(Component comp)
public void setRightComponent(Component comp)
public void setBottomComponent(Component comp)
public Component getLeftComponent()
public Component getTopComponent()
public Component getRightComponent()
public Component getBottomComponent()

comp には設定するコンポーネントを指定します
これを用いれば、コンストラクタ以外で動的にコンポーネントを設定できます
import java.awt.*;
import javax.swing.*;

public class Test extends JApplet {
	public void init() {
		JSplitPane split = new JSplitPane();
		JButton button1 = new JButton(new ImageIcon("icon1.jpg"));
		JButton button2 = new JButton(new ImageIcon("icon2.jpg"));
		split.setLeftComponent(button1);
		split.setRightComponent(button2);

		getContentPane().add(split);
	}
}
このプログラムでは、スプリットのインスタンスを作成した後
メソッドを用いてボタンを追加しています



前のページへ戻る次のページへ