概要

JFrameJDialogなどのWindowがスクリーンの中央に配置されるように設定します。

サンプルコード

JFrame frame = new JFrame("フレームをスクリーン中央に表示");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.getContentPane().add(new MainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
//以下は自前で位置を計算する場合
//Rectangle screen = frame.getGraphicsConfiguration().getBounds();
//frame.setLocation(screen.x + screen.width  / 2 - frame.getSize().width  / 2,
//                  screen.y + screen.height / 2 - frame.getSize().height / 2);
frame.setVisible(true);
view all

解説

Window#setLocationRelativeTo(Component)メソッドで、引数で指定した基準となるコンポーネントがnullの場合、フレームは画面中央に表示されます。

JFrame#setLocationメソッドなどで任意の位置を指定する場合は、フレームの左上隅座標を計算します。

どちらも、フレームをpack()、もしくはsetSize(int, int)でサイズを設定した後で実行するようにしてください。

コメント

  • 1.4以降なら、setLocationRelativeTo(null)でも中央になりますよ。 -- Wata
    • こんな方法があったんですね。参考になりました。 -- aterai
    • というわけで、src.zipなどを更新してみました。ありがとうございました。 -- aterai