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

広告

フレームで使用されるデフォルトのレイアウトマネージャーは BorderLayout ですが他のレイアウトマネージャーを設定することもできます。ここではフレームで使用するレイアウトマネージャーを設定する方法について解説します。

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

フレームでレイアウトマネージャーを設定するには 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

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。