Swing/CenterFrame の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/CenterFrame へ行く。
- Swing/CenterFrame の差分を削除
--- category: swing folder: CenterFrame title: JFrameをスクリーン中央に表示 tags: [JFrame] author: aterai pubdate: 2003-12-29T15:48:20+09:00 description: JFrameやJDialogなどのWindowがスクリーンの中央に配置されるように設定します。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTIvEn-69I/AAAAAAAAATQ/Fw4dLY4C0EE/s800/CenterFrame.png --- * 概要 [#summary] `JFrame`や`JDialog`などの`Window`がスクリーンの中央に配置されるように設定します。 #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTIvEn-69I/AAAAAAAAATQ/Fw4dLY4C0EE/s800/CenterFrame.png) * サンプルコード [#sourcecode] #code(link){{ 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, // frame.setLocation(screen.x + screen.width / 2 - frame.getSize().width / 2, // screen.y + screen.height / 2 - frame.getSize().height / 2); frame.setVisible(true); }} * 解説 [#explanation] `Window#setLocationRelativeTo(Component)`メソッドで引数で指定した基準となるコンポーネントを`null`にした場合、`JFrame`は画面中央に配置されます。 - `JFrame`の左上隅座標を計算して`JFrame#setLocation(...)`メソッドを使用し、`JFrame`を画面中央に配置する方法もある #code{{ 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); }} - どちらの場合も`JFrame`を`pack()`、または`setSize(int, int)`でそのサイズを設定した後で実行する必要がある * コメント [#comment] #comment - `1.4`以降なら、`setLocationRelativeTo(null)`でも中央になりますよ。 -- &user(Wata); &new{2004-06-07 (月) 17:47:08}; -- こんな方法があるのですね。参考になりました。 -- &user(aterai); &new{2004-06-07 (月) 19:26:17}; -- というわけで、`src.zip`などを更新してみました。ありがとうございました。 -- &user(aterai); &new{2004-06-07 (月) 19:44:21}; #comment