2015-07-20 57 views
2

我正在Java中构建一个简单的图形应用程序,它要求我在2D图形画布内获取鼠标位置。我使用了代码MouseInfo.getPointerInfo().getLocation(),但它返回了相对于JFrame窗口而不是g2d画布的鼠标位置。在JFrame中获取鼠标位置考虑窗口边界

例如,当我的鼠标光标位于g2d画布上的坐标(0,0)处时,由于窗口周围有边框,因此MouseInfo.getPointerInfo().getLocation()将返回(8,30)。

我可以只考虑偏移量,但每个操作系统的窗口边框大小会发生变化。

我需要手动检查操作系统和因素的边界偏移,还是有更快的方法?

+0

本帖] (http://stackoverflow.com/questions/12465003/java-mouseevent-position-is-inaccurate)看起来像一个很好的解决你的问题。 –

+0

谢谢,约翰!该帖子的更新完全解决了我的问题。我需要使用以下代码添加一个框架:'frame.getContentPane()。addMouseListener(listener);',然后用'evt.getPoint()获取鼠标在事件监听器中的位置' –

回答

0

使用此post解决了问题。我需要用这个办法:

  1. 添加事件侦听器:

    myJFrame.getContentPane().addMouseListener(listener); 
    
  2. 获取鼠标事件函数中的鼠标位置:

    evt.getPoint()