モニターの解像度に関係なく、JFrameが中央に表示されるように設定するにはどうすればよいですか?[閉まっている]


197

Javaを使用しているときに、アプリケーションを起動したときにメインウィンドウを画面の中央に配置するのが難しいと感じました。

それを行う方法はありますか?垂直方向に中央揃えする必要はありません。水平方向の配置が私にとってより重要な目標です。ただし、垂直方向の配置も可能です。

回答:


232

私はいつもこのようにそれをしました:

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);

this関係するJFrameはどこですか。


1
私はこの答えが本当に古いことを知っていますが、これを静的なコンテキストで実行する方法はありますか?私はそれに向けて作業するか、何らかの理由で使用したいpublic static void main(String [] args)を単にドロップするかを決定しています。
2xedo

14
これはシングルモニターセットアップで機能しますが、デュアルモニターでは2つにまたがって表示される場合があります(同じ解像度である場合)。を使用setLocationRelativeTo(null)すると、マルチモニター設定でもプライマリモニターの中心に配置されます。
ランギキーン2015年

1
中央に配置する前にJFrameを表示するように設定する必要があることに注意してください。
ハンターS

4
@HunterS:これは不正解です。実際には、中央に配置するまで表示しないようにすることをお勧めします。このように表示されずにジャンプします。この回答のコードの前にフレームを梱包するか寸法を設定している限り、問題はありません。
エリックロバートソン

520

使用する setLocationRelativeTo(null)

このメソッドには、を渡すと特別な効果がありますnull。Javadocによると:

コンポーネントがnullの場合、またはこのコンポーネントに関連付けられているGraphicsConfigurationがnullの場合、ウィンドウは画面の中央に配置されます。

これは、サイズを設定するかを呼び出した後pack()、次のように表示する前に行う必要があります。

frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

102
+1(pack()メソッドを使用する場合、setLocationRelativeTopack()メソッド呼び出しの後に使用する必要があります)
Ravindra Gullapalli

6
@Imrayは、デュアルモニター構成ではおそらく機能しないためです。:P
Ankit

17
そのメソッドはの後に呼び出す必要があるようです.setSize()
カミル2013年

6
これはマルチモニター設定で機能し、コメントで述べられているように、pack()とsetSize()が呼び出される場合は、それらを呼び出す必要があります。
ポールグレゴワール2014

2
@Ankitそれは私のデュアルモニター設定で完璧に動作します。「最良の」答えは常にOPによって選択されます。
ケント


29

フォームをクリックしてJFrameプロパティに移動し、次に[コード]タブに移動してチェックしGenerate Centerます。

ここに画像の説明を入力してください


私はこれについて考えたことはありません。とにかく、これをクリックした後でそれ自体の背後で機能するコードはどうでしょうか。@HenkVanBoeijen
gumuruh

11

これと同じくらい簡単です...

setSize(220, 400);
setLocationRelativeTo(null);  

または、フレームを使用している場合は、フレームを

frame.setSize(220, 400);
frame.setLocationRelativeTo(null);  

明確にするために、ドキュメントから

コンポーネントがnullの場合、またはこのコンポーネントに関連付けられているGraphicsConfigurationがnullの場合、ウィンドウは画面の中央に配置されます。


7

開発環境としてNetBeans IDE 7.2.1を使用していますが、JFormプロパティを設定するオプションがあります。

JFormプロパティの[コード]タブに移動し、[生成センター]を構成します。まず、フォームサイズポリシーを「Generate Resize Code」に設定する必要があります。


6

私はNetBeans IDE 7.3を使用していますが、これがJFrameを集中管理する方法です。JFrameパネルをクリックしてJFrameプロパティバーに移動し、コードバーをクリックして、[センターの生成]チェックボックスを選択してください。


2

NetBeansを使用する場合は、デザインビューのフレームをクリックしてから、プロパティの[コード]タブをクリックします。次に、「Generate Center」をチェックします。それは仕事を成し遂げるでしょう。


1

明示的setPreferredSize(new Dimension(X, Y));にする場合は、次のように使用することをお勧めします。

setLocation(dim.width/2-this.getPreferredSize().width/2, dim.height/2-this.getPreferredSize().height/2);


1

このメソッドを使用すると、JFrameを中央に配置すると同時に全画面表示にすることができます。

yourframe.setExtendedState(JFrame.MAXIMIZED_BOTH);

0

Net Beans GUIで、jframe(ナビゲーターでjFrame右クリック)プロパティに移動し、コードフォームサイズポリシープロパティ、[ サイズ変更コードの生成]を選択します。同じウィンドウで、[位置生成]のチェックを外し[ サイズと中心を生成]チェックします。

プログラミングをお楽しみください。ラマナ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.