フレームで使用するレイアウトマネージャーを設定する
フレームで使用されるデフォルトのレイアウトマネージャーは BorderLayout ですが他のレイアウトマネージャーを設定することもできます。ここではフレームで使用するレイアウトマネージャーを設定する方法について解説します。
(2022 年 04 月 11 日公開 / 2022 年 04 月 11 日更新)
レイアウトマネージャーを設定する
フレームでレイアウトマネージャーを設定するには ContentPane を取得し、ペインに対して設定を行います。設定を行うには Container クラスで定義されている setLayout メソッドを使います。
public void setLayout(LayoutManager mgr)
このコンテナのレイアウト・マネージャを設定します。
このメソッドではレイアウトに関連する情報が変更されるため、コンポーネント階層が無効になります。
パラメータ:
mgr - 指定されたレイアウト・マネージャ
引数にはレイアウトマネージャーを表す LayoutManager インターフェースを実装したクラスのオブジェクトを指定します。
実際の使い方は次のようになります。
import javax.swing.JFrame; import java.awt.FlowLayout; class Sample extends JFrame{ public static void main(String args[]){ } Sample(String title){ Container contentPane = getContentPane(); contentPane.setLayout(new FlowLayout()); } }
-- --
なお現在では ContentPane を取得してからレイアウトマネージャーを設定しなくても JFrame クラスで定義されている setLayout メソッドを使うことで自動的に ContentPane に設定されます。
public void setLayout(LayoutManager manager)
LayoutManagerを設定します。 オーバーライドすると、呼出しが条件付きでcontentPaneに転送されます。 詳細は、RootPaneContainerを参照してください。
オーバーライド:
setLayout、クラス: Container
パラメータ:
manager - LayoutManager
この場合の使い方は次のようになります。
import javax.swing.JFrame; import java.awt.FlowLayout; class Sample extends JFrame{ public static void main(String args[]){ } Sample(String title){ setLayout(new FlowLayout()); } }
サンプルプログラム
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample8_1.java という名前で保存します。
import javax.swing.JFrame; import javax.swing.ImageIcon; class JSample7_1 extends JFrame{ public static void main(String args[]){ JSample7_1 frame = new JSample7_1("MyTitle"); frame.setVisible(true); } JSample7_1(String title){ setTitle(title); setBounds(100, 100, 600, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ImageIcon icon = new ImageIcon("./icon.png"); setIconImage(icon.getImage()); } }
次のようにコンパイルを行います。
javac JSample8_1.java
コンパイルが終わりましたら実行します。
java JSample8_1
フレームのレイアウトマネージャーとして FlowLayout を設定したあと、ボタンを 2 つフレームに追加しています。
-- --
フレームで使用するレイアウトマネージャーを設定する方法について解説しました。
( Written by Tatsuo Ikura )

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