我是否将MouseListeners添加到Canvas或JFrame

时间:2017-12-12 04:08:13

标签: java canvas jframe mouselistener mousemotionlistener

我试图在我的游戏中添加一个mouseListener和一个mouseMotionListener,并注意到我可以将它们添加到Canvas或JFrame中。我可以将它添加到其中一个或其中一个吗?

2 个答案:

答案 0 :(得分:1)

我建议使用Canvas。当您使用任何类型的侦听器时,请考虑将要发生的操作。您的所有更新是在框架上还是在画布上进行的?如果是后者,请使用画布处理所有动作侦听器对象。

另一种思考方式是JFrame只是一个控制游戏实现的窗口。您的图形更新,键盘输入,鼠标输入和任何其他功能都是通过画布完成的。

例如,将JFrame和canvas与此Skyrim图像进行比较。外部窗口(A JFrame对象)具有关闭/最小化功能,窗口保持游戏屏幕(画布对象)。

enter image description here

答案 1 :(得分:0)

将其附加到画布

您应该将鼠标侦听器添加到画布,原因有以下几点: 的坐标。

如果您将鼠标侦听器附加到框架,则0点坐标将位于 JFrame边框的左上角。很难计算相对于画布的坐标。

而不是你可以将鼠标监听器附加到Canvas 。这个坐标会更好。但是在添加监听器之后不要忘记专注于画布:

canvas.addMouseMotionListener(motionListener);
canvas.requestFocus();