我在一个正在编写的游戏中遇到了这个问题但是在一个单独的jar上重现了这个问题,该jar只包含一个框架,一个面板和一个鼠标运动监听器。
问题是我画了一个矩形 - 例如在x:512, y:384 (48x48)
。
在帧上使用鼠标移动侦听器时,它总是报告Y轴减少约25个像素。因此,虽然矩形的坐标应为x:512, y:384
,但鼠标移动侦听器报告为x:512, y:409
。
我理论上可以只添加鼠标Y的差异,但我需要理解为什么会发生这种情况。
答案 0 :(得分:3)
它总是报告Y轴约25像素
也许您将MouseListener添加到框架而不是面板。
您在面板上绘制矩形,但面板位于(在我的操作系统上)从框架顶部向下30个像素,因此您的坐标不匹配。 X值也应该是框架边框的宽度。
尝试将监听器添加到面板。
答案 1 :(得分:1)
Frame
和Board
的来源不同。 Board
的来源是(0, 25)
的{{1}}。
不是一个好的形象。首先,屏幕截图不会显示光标,所以我绘制了它。其次,我没有将光标准确地放在Frame
上,而是放在它周围。