ホームページ >Java >&#&チュートリアル >サイズ変更可能な JFrame を正確に中央に配置し、そのエッジとの衝突を検出するにはどうすればよいですか?

サイズ変更可能な JFrame を正確に中央に配置し、そのエッジとの衝突を検出するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-04 09:29:11732ブラウズ

How to Accurately Center a Resizable JFrame and Detect Collisions with its Edges?

サイズ変更可能な JFrame での正確な中心位置の解決

クエリには、フレームのエッジとの正確な衝突検出と正確な中心の決定という 2 つの課題があります。画面サイズに関係なく。

衝突検出訂正

衝突検出で観察された 10 ピクセルのオフセットは、フレームの寸法の誤解に起因する可能性があります。 JFrame には、実際のコンテンツ ペインの周囲にあるボーダー、JRootPane、およびその他のコンポーネントが含まれています。したがって、境界線の幅と高さを考慮して計算を調整する必要があります。

正確なペイント可能領域を取得するには、次の式を使用します。

Width - border.width
Height - border.height

正確な画面中心の決定

画面の正確な中心を見つけるには、次の点を考慮してください。以下:

  • フレームの視点: フレームの寸法に基づいて中心は (100x100) にあります。
  • コンテンツ ペインの視点:中心はコンテンツ ペインに基づく (92x81) です。

使用する値の選択は目的によって異なります。

  • フレームの位置決めには、フレームの中心点を使用します。
  • ペイントする場合は、コンテンツ ペインの中心点を使用します。

Frame

フレームを画面の中央に簡単に配置するには、Window#setLocationRelativeTo(null) を呼び出します。

または、次の式を使用できます。

JFrame frame = ...;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int x = (screenSize.width - frame.getWidth()) / 2;
int y = (screenSize.height - frame.getHeight()) / 2;
frame.setLocation(x, y);

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

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