鼠标位置是相对窗口,而不是内容

时间:2012-04-07 01:14:00

标签: java jframe

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

enter image description here

代码如下:

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

这是通过JFrame.addWindowListener()

连接的

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

我会确保您将事件绑定到窗口框架内的内容窗格。那么你的事件应该从0,0坐标开始。假设,你不需要在main主题之外的事件,为了所有目的,你可以在那里绑定不同的事件处理程序。

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

答案 1 :(得分:0)

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

答案 2 :(得分: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;