Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
坐标上的Java fillRect和鼠标移动点坐标在Y轴上处于禁用状态_Java_Java 2d - Fatal编程技术网

坐标上的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。这就是问题所在,我没有意识到框架包括窗口顶部作为坐标,这解释了偏移。将侦听器移动到面板解决了这个问题。我不认为这不是最重要的答案