我正在用Java编写一个简单的游戏,并试图获取鼠标的坐标。我想要的是内容左上角的0,0,但是,我获得了相对于Window的坐标。
代码如下:
public void mouseMoved(MouseEvent event)
{
x = event.getY();
y = event.getX();
}
这是通过JFrame.addWindowListener()
有什么建议吗?
答案 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;