坐标上的Java fillRect和鼠标移动点坐标在Y轴上处于禁用状态
我在写的一个游戏中遇到了这个问题,但在一个单独的罐子上重现了这个问题,这个罐子只包含一个框架、一个面板和一个鼠标运动监听器 问题是我画了一个矩形-例如在坐标上的Java fillRect和鼠标移动点坐标在Y轴上处于禁用状态,java,java-2d,Java,Java 2d,我在写的一个游戏中遇到了这个问题,但在一个单独的罐子上重现了这个问题,这个罐子只包含一个框架、一个面板和一个鼠标运动监听器 问题是我画了一个矩形-例如在x:512,y:384(48x48) 在帧上使用鼠标运动监听器,它总是报告Y轴大约小于25像素。因此,虽然矩形的坐标应为x:512,y:384,但鼠标运动侦听器报告为x:512,y:409 理论上,我可以给鼠标Y添加差异,但我需要理解为什么会发生这种情况 它总是报告Y轴大约小于25像素 也许你把鼠标听筒放在了框架上而不是面板上 您在面板上绘制矩
x:512,y:384(48x48)
在帧上使用鼠标运动监听器,它总是报告Y轴大约小于25像素。因此,虽然矩形的坐标应为x:512,y:384
,但鼠标运动侦听器报告为x:512,y:409
理论上,我可以给鼠标Y添加差异,但我需要理解为什么会发生这种情况
它总是报告Y轴大约小于25像素
也许你把鼠标听筒放在了框架上而不是面板上
您在面板上绘制矩形,但面板位于(在我的操作系统上)距框架顶部30像素的位置,因此您的坐标不匹配。X值也应按帧边框的宽度计算
尝试将侦听器添加到面板。帧和板的起源不同。
板的起源是框架的(0,25)
不过,这不是一个好形象。首先,屏幕截图不会显示光标,所以我画了它。其次,我没有将光标准确地放在(0,25)
上,而是放在它的周围。可能它会报告鼠标的尖端或底部。我想可能是这样的,但至少从视觉上看,指针底部到框顶部大约有10px。这就是问题所在,我没有意识到框架包括窗口顶部作为坐标,这解释了偏移。将侦听器移动到面板解决了这个问题。我不认为这不是最重要的答案