パネルで使用するレイアウトマネージャーを設定する
パネルで使用されるデフォルトのレイアウトマネージャーは FlowLayout ですが他のレイアウトマネージャーを設定することもできます。ここではパネルで使用するレイアウトマネージャーを設定する方法について解説します。
(2022 年 04 月 11 日公開 / 2022 年 04 月 11 日更新)
レイアウトマネージャーを設定する
最初にコンストラクタで使用するレイアウトマネージャーを指定する方法です。次のコンストラクタを使用します。
public JPanel(LayoutManager layout)
指定されたレイアウト・マネージャで、新しいJPanelを作成します。
パラメータ:
layout - 使用するLayoutManager
引数にはレイアウトマネージャーを表す LayoutManager インターフェースを実装したクラスのオブジェクトを指定します。
実際の使い方は次のようになります。
JPanel panel = new JPanel(new BorderLayout());
この場合はレイアウトマネージャーとして BorderLayout を使用するパネルのオブジェクトが作成されます。
-- --
次に作成済みパネルのレイアウトマネージャーを設定する方法です。レイアウトマネージャーを設定するには JPanel クラスの親クラスである Container クラスで定義されている setLayout メソッドを使います。
public void setLayout(LayoutManager mgr)
このコンテナのレイアウト・マネージャを設定します。
このメソッドではレイアウトに関連する情報が変更されるため、コンポーネント階層が無効になります。
パラメータ:
mgr - 指定されたレイアウト・マネージャ
引数にはレイアウトマネージャーを表す LayoutManager インターフェースを実装したクラスのオブジェクトを指定します。
実際の使い方は次のようになります。
JPanel panel = new JPanel(); panel.setLayout(new BorderLayout());
この場合はレイアウトマネージャーとして BorderLayout を使用するパネルのオブジェクトが作成されます。
サンプルプログラム
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample4_1.java という名前で保存します。
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import java.awt.Container; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.Dimension; class JSample4_1 extends JFrame{ public static void main(String args[]){ JSample4_1 frame = new JSample4_1("MyTitle"); frame.setVisible(true); } JSample4_1(String title){ setTitle(title); setBounds(100, 100, 600, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /* Changed Frame's layout manager to FlowLayout */ setLayout(new FlowLayout()); JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(300, 200)); /* Changed Panel's layout manager to BorderLayout */ panel.setLayout(new BorderLayout()); JButton button1 = new JButton("NORTH"); JButton button2 = new JButton("WEST"); JButton button3 = new JButton("SOUTH"); JButton button4 = new JButton("EAST"); panel.add(button1, BorderLayout.NORTH); panel.add(button2, BorderLayout.WEST); panel.add(button3, BorderLayout.SOUTH); panel.add(button4, BorderLayout.EAST); Container contentPane = getContentPane(); contentPane.add(panel); } }
次のようにコンパイルを行います。
javac JSample4_1.java
コンパイルが終わりましたら実行します。
java JSample4_1
パネルのレイアウトマネジャーを BorderLayout に変更したあとで、 4 つのボタンをそれぞれパネルに追加しています。
今回の例では分かりやすいようにフレームのレイアウトマネジャーを FlowLayout に変更しています。
-- --
パネルで使用するレイアウトマネージャーを設定する方法について解説しました。
( Written by Tatsuo Ikura )

著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。