首頁 >Java >java教程 >如何準確地將可調整大小的 JFrame 居中並偵測與其邊緣的碰撞?

如何準確地將可調整大小的 JFrame 居中並偵測與其邊緣的碰撞?

DDD
DDD原創
2024-12-04 09:29:11718瀏覽

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

解決可調整大小的JFrame 中的精確中心定位

您的查詢提出了兩個挑戰:與框架邊緣的精確碰撞偵測並確定精確中心,無論螢幕尺寸為何。

碰撞偵測修正

碰撞偵測中觀察到的 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn