領域にコンポーネントを配置する

広告

左右又は上下に分割されたそれぞれの領域にコンポーネントを配置する方法を確認します。

コンポーネントを配置するにはコンストラクタで設定する方法とメソッドを使って設定するがあります。まずはコンストラクタで設定する方法を確認します。

方向と、連続した再描画を行わないコンポーネントを指定して新しい JSplitPane
を作成します。

パラメータ:
  newOrientation - JSplitPane.HORIZONTAL_SPLIT または 
    JSplitPane.VERTICAL_SPLIT
  newLeftComponent - 水平方向に分割された区画の左、または垂直方向に分割
    された区画の上に表示される Component
  newRightComponent - 水平方向に分割された区画の右、または垂直方向に分割
    された区画の下に表示される Component 
例外: 
  IllegalArgumentException - orientation が HORIZONTAL_SPLIT または 
    VERTICAL_SPLIT のどちらかでない場合

1番目の引数に分割する方向を表すint型の値を指定します。設定できる値はJSplitPane.HORIZONTAL_SPLIT又はJSplitPane.VERTICAL_SPLIです。詳しくは『分割方向を設定する』を参照して下さい。

2番目と3番目の引数にそれぞれの領域に配置するコンポーネントを指定します。分割する方向が左右の場合、2番目の引数に左側の領域に配置するコンポーネントを、3番目の引数に右側の領域に配置するコンポーネントを指定します。分割する方向が上下の場合、2番目の引数に上側の領域に配置するコンポーネントを、3番目の引数に下側の領域に配置するコンポーネントを指定します。

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

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

JSplitPane splitpane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
  new JButton("left"), new JButton("right"));

メソッドを使って設定する

一度作成されたスプリットペインにメソッドを使ってコンポーネントを配置する方法を確認します。JSplitPaneクラスで用意されている「setLeftComponent」メソッド及び「setRightComponent」メソッドを使います。

コンポーネントをディバイダの左 (上) に設定します。

パラメータ:
  comp - その位置に表示する Component
ディバイダの右 (または下) のコンポーネントを設定します。

パラメータ:
  comp - その位置に表示する Component

左側及び上側にコンポーネントを配置する場合には「setLeftComponent」メソッドを使います。右側及び下側にコンポーネントを配置する場合には「setRightComponent」メソッドを使います。引数にはそれぞれComponentクラス及びそのサブクラスのオブジェクトを指定します。

上側及び下側にコンポーネントを配置する場合にも同じメソッドを使えますが、それぞれ同じ動きをする「setTopComponent」メソッド及び「setBottomComponent」メソッドも用意されています。

コンポーネントをディバイダの上または左に設定します。

パラメータ:
  comp - その位置に表示する Component
コンポーネントをディバイダの下または右に設定します。

パラメータ:
  comp - その位置に表示する Component

これらのメソッドを使って左側及び右側の領域へコンポーネントを配置することも可能です。

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

JSplitPane splitpane = new JSplitPane();
splitpane.setLeftComponent(new JButton("left"));
splitpane.setRightComponent(new JButton("right"));

サンプルプログラム

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

JSplitPaneTest3.java

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

public class JSplitPaneTest3 extends JFrame{

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

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

  JSplitPaneTest3(){
    JSplitPane splitpane = new JSplitPane();

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

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

    splitpane.setLeftComponent(leftPanel);
    splitpane.setRightComponent(rightPanel);

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

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

JSplitPaneで領域にコンポーネントを配置する

( Written by Tatsuo Ikura )

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