我正在用 Java 编写一个简单的游戏,并试图获取鼠标的坐标。我想要的是内容左上角的 0,0,但是,我得到了相对于窗口的坐标。
代码如下:
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;