0

我正在用 Java 编写一个简单的游戏,并试图获取鼠标的坐标。我想要的是内容左上角的 0,0,但是,我得到了相对于窗口的坐标。

在此处输入图像描述

代码如下:

public void mouseMoved(MouseEvent event)
{
    x = event.getY();
    y = event.getX();
}

这是通过JFrame.addWindowListener()

有什么建议么?

4

3 回答 3

3

我会确保您将事件绑定到窗口框架内的内容窗格。那么你的事件应该从 0,0 坐标相对触发。假设,您不需要主外部的事件,出于所有目的,您可以在那里绑定不同的事件处理程序。

另一种方法是确定标题栏高度和窗口框架宽度,然后将它们从给定坐标中减去(因为您在游戏窗口内与它们相邻 - 如果您适当地移动调整)内容框架内的相对位置。

于 2012-04-07T01:22:28.193 回答
0

那是相对于窗口的。窗口包括 边缘周围的边框contentPane,这就是为什么你得到 3, 25 而不是 0,0。您可以将您MouseListenercontentPane直接添加到边框中,也可以使用框架Insets来说明边框。

于 2012-04-07T01:26:40.203 回答
0
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;
于 2013-05-11T09:24:44.210 回答