2013-05-28 155 views
4

我在写一个游戏时遇到了这个问题,但在单独的一个jar包中只有一个框架,一个面板和一个鼠标运动监听器。坐标上的Java fillRect和鼠标移动点坐标在Y轴上关闭

问题是我画了一个矩形 - 例如在x:512, y:384 (48x48)

在框架上使用鼠标移动监听器时,它始终会报告Y轴减少约25个像素。因此,矩形的坐标应为x:512, y:384,鼠标移动侦听器报告为x:512, y:409

我理论上可以将差异添加到鼠标Y,但我需要了解为什么发生这种情况。

Full code for the three example classes

+0

可能它报告鼠标的提示或底部。 – arynaq

+0

我认为可能是这种情况,但至少在视觉上,从指针底部到框的顶部大约有10像素。 – helion3

回答

3

它始终报告Y轴周围的25个像素少

也许你添加的MouseListener的框架,而不是面板。

您可以在面板上绘制矩形,但面板位于(在我的操作系统上)距框架顶部30像素,因此坐标不匹配。 X值也应该超出框架边框的宽度。

尝试添加侦听器到面板。

+0

这是个问题,我没有意识到框架包含在窗口的顶部作为坐标,这就解释了偏移量。将听众移到面板上解决了问题。 – helion3

1

FrameBoard的来源有所不同。 Board的来源是Frame(0, 25)

Got it now?

不是一个良好的形象,虽然。首先,截图不会显示光标,所以我画了它。其次,我没有把我的光标准确地放在(0, 25)上,只是围绕它而已。

+0

我不明白这不是最佳答案 –