ホームページ >Java >&#&チュートリアル >サイズ変更可能な JFrame 内でコンポーネントを正確に中央に配置するにはどうすればよいですか?

サイズ変更可能な JFrame 内でコンポーネントを正確に中央に配置するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 17:23:11675ブラウズ

How to Accurately Center Components within a Resizable JFrame?

サイズ変更可能な JFrame の正確な中心を見つける

背景:
JFrame アプリケーションを設計する場合、正確に配置する画面上の要素は非常に重要です。ただし、正確な中心点を決定することは、特に JFrame がサイズ変更可能な場合に困難になる可能性があります。

問題:
この質問は 2 つの主要な懸念点を明らかにしています:

  1. 幅を 400 に指定しているにもかかわらず、オブジェクトは一貫して JFrame 画面から 10 ピクセル跳ね返ります短い。
  2. サイズに関係なく、サイズ変更可能な JFrame の正確な中心点を決定する方法。

解決策:
1. JFrame 境界の補正:
オブジェクトの位置の不一致は、JFrame の境界が原因である可能性があります。フレームには装飾的な境界線があり、実際にペイントできる領域が減少します。これを考慮して、幅と高さを次のように計算します:

width - border.width
height - border.height

2.動的中心点の計算:
任意の画面サイズで正確な中心点を取得するには、次の手順に従います:

  1. 現在の JFrame の寸法を取得します:frame.getWidth() および Frame.getHeight ().
  2. 中心点の座標を計算します: 幅 / 2 と高さ / 2.
  3. 境界線を調整します (必要に応じて): width / 2 - border.width / 2 および height / 2 - border.height / 2.

代替解決策:
または、setLocationRelativeTo(null) メソッドを使用して、JFrame を画面に対して中央に配置することを検討してください。サイズに関係なく。

改善された例:
コードで改善された中心点計算を使用するには:

int centerX = (frame.getWidth() / 2) - (frame.getBorder().getBorderInsets().right / 2);
int centerY = (frame.getHeight() / 2) - (frame.getBorder().getBorderInsets().bottom / 2);

以上がサイズ変更可能な JFrame 内でコンポーネントを正確に中央に配置するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。