フレームで使用するレイアウトマネージャーを設定する

フレームで使用されるデフォルトのレイアウトマネージャーは 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

レイアウトマネージャーを設定する(1)

コンパイルが終わりましたら実行します。

java JSample8_1

フレームのレイアウトマネージャーとして FlowLayout を設定したあと、ボタンを 2 つフレームに追加しています。

レイアウトマネージャーを設定する(2)

-- --

フレームで使用するレイアウトマネージャーを設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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