コンポーネントの配置位置を指定する

広告

レイアウトマネージャーにBorderLayoutを使用している場合、コンポーネントを配置する時にどこの場所に配置するかを指定する必要があります。

BorderLayoutクラスには5つの領域が用意されており場所を指定する値として次の5つが用意されています。

絶対指定相対指定位置
BorderLayout.CENTERBorderLayout.CENTER中央
BorderLayout.NORTHBorderLayout.PAGE_START
BorderLayout.SOUTHBorderLayout.PAGE_END
BorderLayout.WESTBorderLayout.LINE_START
BorderLayout.EASTBorderLayout.LINE_END

配置場所を指定する値として絶対指定と相対指定の二通りが用意されています。どちらを使っても問題はありませんが混合して使わないようにして下さい。それぞれの値を配置した場合の位置は次の通りです。

BorderLayoutの配置

BorderLayoutの配置

フレームやパネルにコンポーネントを追加する際に利用する「add」メソッドの2番目の引数に上記のいずれかの値を指定して下さい。

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

JLabel label = new JLabel("ラベル");

JFrame frame = new JFrame();
frame.getContentPane().add(label, BorderLayout.NORTH);

なお、BorderLayoutが設定されているフレームやパネルに対して2番目の引数無しの「add」メソッドを使った場合にはBorderLayout.CENTERが指定されたことになります。

JLabel label = new JLabel("ラベル");

JFrame frame = new JFrame();
frame.getContentPane().add(label);
// frame.getContentPane().add(label, BorderLayout.CENTER); と同じ

サンプルプログラム

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

BorderLayoutTest2.java

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

public class BorderLayoutTest2 extends JFrame{

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

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

  BorderLayoutTest2(){
    JButton button1 = new JButton("NORTH");
    JButton button2 = new JButton("CENTER");
    JButton button3 = new JButton("SOUTH");
    JButton button4 = new JButton("WEST");
    JButton button5 = new JButton("EAST");

    JPanel p = new JPanel();
    p.setLayout(new BorderLayout());

    p.add(button1, BorderLayout.NORTH);
    p.add(button2, BorderLayout.CENTER);
    p.add(button3, BorderLayout.SOUTH);
    p.add(button4, BorderLayout.WEST);
    p.add(button5, BorderLayout.EAST);

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

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

BorderLayoutで配置位置を指定する

( Written by Tatsuo Ikura )

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