フレームをWindows中央に表示

広告

setBoundsメソッドを使うことでフレームの表示位置をピクセル単位で指定することができますが、ここではフレームをWindowsの中央に表示させる方法を確認します。

フレームをWindowsの中央に表示するにはJFrameクラスの親クラスであるWindowクラスで定義されているsetLocationRelativeToメソッドを使います。

指定されたコンポーネントを基準にしてウィンドウの位置を設定します。

コンポーネントが現在表示されていない場合、または c が null の場合、ウィンドウは画面の中央に
配置されます。中央点は、GraphicsEnvironment.getCenterPoint で決定されます。 

コンポーネントの下部がオフスクリーンの場合、ウィンドウは Component の画面の中央に近い方の側
に表示されます。つまり、Component が画面の右側にある場合、Window はその左側に配置され、
Component が左側にある場合、Window はその右側に配置されます。 

パラメータ:
  c - ウィンドウの位置の基準となるコンポーネント

このメソッドは引数に指定したコンポーネットを記述にしてウィンドウの表示位置を指定するためのものですが、引数にnullを指定すると対象のウィンドウをWindows画面の中央に表示します。

位置の調整はウィンドウのサイズに応じて行われるため、まずフレームが表示されているウィンドウのサイズをsetSizeメソッドなどを使って指定した上でsetLocationRelativeToメソッドを実行して下さい。(setSizeメソッドについては「フレームのサイズと表示位置(setSize, setBoundsメソッド)」を参照して下さい)。

実際には次のように記述します。

JFrame frame = new JFrame("タイトル");

frame.setSize(100, 80);
frame.setLocationRelativeTo(null);

サンプル

では実際に試してみます。

SSample3_1.java

import javax.swing.JFrame;

class SSample3_1{
  public static void main(String args[]){
    JFrame frame = new JFrame("タイトル");
    frame.setSize(400, 300);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }
}

ではコンパイルを行った上で実行してみます。

p3-1

このように作成したフレームがWindowsの中央に自動的に配置されます。

( Written by Tatsuo Ikura )