Java 在考虑窗口边界的情况下获取JFrame中的鼠标位置

Java 在考虑窗口边界的情况下获取JFrame中的鼠标位置,java,swing,jframe,java-2d,drawing2d,Java,Swing,Jframe,Java 2d,Drawing2d,我正在用Java构建一个简单的图形应用程序,它需要我在2D图形画布中获取鼠标位置。我使用了代码MouseInfo.getPointerInfo().getLocation(),但它返回相对于JFrame窗口而不是g2d画布的鼠标位置 例如,当我的鼠标光标位于g2d画布上的坐标(0,0)处时,MouseInfo.getPointerInfo().getLocation()将返回(8,30),因为窗口周围有边框 我可以只考虑偏移量,但每个操作系统的窗口边框大小都会发生变化 我是否需要手动检查边界偏移

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

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

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


我是否需要手动检查边界偏移中的操作系统和系数,或者是否有更快的方法?

使用此方法解决了问题。我需要使用这种方法:

  • 添加事件侦听器:

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

    evt.getPoint()
    

  • 看来是解决你问题的好办法。谢谢你,约翰!那篇文章的更新彻底解决了我的问题。我需要使用以下代码添加一个框架:
    frame.getContentPane().addMouseListener(listener)
    ,然后使用
    evt.getPoint()