Javaを使用しているときに、アプリケーションを起動したときにメインウィンドウを画面の中央に配置するのが難しいと感じました。
それを行う方法はありますか?垂直方向に中央揃えする必要はありません。水平方向の配置が私にとってより重要な目標です。ただし、垂直方向の配置も可能です。
Javaを使用しているときに、アプリケーションを起動したときにメインウィンドウを画面の中央に配置するのが難しいと感じました。
それを行う方法はありますか?垂直方向に中央揃えする必要はありません。水平方向の配置が私にとってより重要な目標です。ただし、垂直方向の配置も可能です。
回答:
私はいつもこのようにそれをしました:
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);
this
関係するJFrameはどこですか。
setLocationRelativeTo(null)
すると、マルチモニター設定でもプライマリモニターの中心に配置されます。
使用する setLocationRelativeTo(null)
このメソッドには、を渡すと特別な効果がありますnull
。Javadocによると:
コンポーネントがnullの場合、またはこのコンポーネントに関連付けられているGraphicsConfigurationがnullの場合、ウィンドウは画面の中央に配置されます。
これは、サイズを設定するかを呼び出した後pack()
、次のように表示する前に行う必要があります。
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
setLocationRelativeTo
pack()メソッド呼び出しの後に使用する必要があります)
.setSize()
。
JFrame.setLocationRelativeTo(null)
ウィンドウを中央に配置するために呼び出すことができます。これを前に置くことを確認してくださいJFrame.setVisible(true)
setLocationRelativeTo
pack()メソッド呼び出しの後に使用する必要があります)
これと同じくらい簡単です...
setSize(220, 400);
setLocationRelativeTo(null);
または、フレームを使用している場合は、フレームを
frame.setSize(220, 400);
frame.setLocationRelativeTo(null);
明確にするために、ドキュメントから:
コンポーネントがnullの場合、またはこのコンポーネントに関連付けられているGraphicsConfigurationがnullの場合、ウィンドウは画面の中央に配置されます。
明示的setPreferredSize(new Dimension(X, Y));
にする場合は、次のように使用することをお勧めします。
setLocation(dim.width/2-this.getPreferredSize().width/2, dim.height/2-this.getPreferredSize().height/2);