コンポーネントの配置位置を指定する
広告
レイアウトマネージャーにBorderLayoutを使用している場合、コンポーネントを配置する時にどこの場所に配置するかを指定する必要があります。
BorderLayoutクラスには5つの領域が用意されており場所を指定する値として次の5つが用意されています。
絶対指定 | 相対指定 | 位置 |
---|---|---|
BorderLayout.CENTER | BorderLayout.CENTER | 中央 |
BorderLayout.NORTH | BorderLayout.PAGE_START | 上 |
BorderLayout.SOUTH | BorderLayout.PAGE_END | 下 |
BorderLayout.WEST | BorderLayout.LINE_START | 左 |
BorderLayout.EAST | BorderLayout.LINE_END | 右 |
配置場所を指定する値として絶対指定と相対指定の二通りが用意されています。どちらを使っても問題はありませんが混合して使わないようにして下さい。それぞれの値を配置した場合の位置は次の通りです。
フレームやパネルにコンポーネントを追加する際に利用する「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); と同じ
サンプルプログラム
では簡単なサンプルを作成して試してみます。
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); } }
上記をコンパイルした後で実行すると次のように表示されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。