我正在用Java編寫一個簡單的遊戲,並試圖獲取鼠標的座標。我想要的是內容左上角的0,0,但是,我獲得了相對於Window的座標。鼠標位置是相對窗口,而不是內容
的代碼如下:
public void mouseMoved(MouseEvent event)
{
x = event.getY();
y = event.getX();
}
,這是通過JFrame.addWindowListener()
任何建議勾搭上了?
我正在用Java編寫一個簡單的遊戲,並試圖獲取鼠標的座標。我想要的是內容左上角的0,0,但是,我獲得了相對於Window的座標。鼠標位置是相對窗口,而不是內容
的代碼如下:
public void mouseMoved(MouseEvent event)
{
x = event.getY();
y = event.getX();
}
,這是通過JFrame.addWindowListener()
任何建議勾搭上了?
我會確保你的事件綁定到窗口框架內的內容窗格。然後你的事件應該從0,0座標相對觸發。假設,你不需要外部的主要事件,爲了所有目的,你可以在那裏綁定不同的事件處理程序。
另一種方法是確定的標題欄的高度和窗口幀的寬度和距離給定的座標中減去它們(因爲你是定位成鄰近他們的遊戲窗口內 - 如果移動適當地調整),用於相對於內部的位置內容框架。
這是相對於窗口。該窗口包含圍繞contentPane
邊緣的邊框,這就是爲什麼你得到3,25而不是0,0。您可以直接將MouseListener
添加到contentPane
,或者使用框架的Insets
來說明邊界。
double screenW = Toolkit.getDefaultToolkit().getScreenSize().width;
double screenH = Toolkit.getDefaultToolkit().getScreenSize().height;
double posX = screenW/2 - WIDTH/2;
double posY = screenH/2 - HEIGHT/2;
x = event.getX() - posX;
y = event.getY() - posY;