鼠标移动时Java鼠标事件被忽略?

9

最近我一直在用Java开发2D游戏,目前正在尝试让事件处理系统正常工作。我想通过鼠标点击来启动动画,当我尝试在点击时移动鼠标时,它就无法正常工作了。我同时使用了mouselistener和mousemotionlistener类,但问题仍然存在。

以下是Main中的代码:

public class ML extends MouseAdapter{
   public void mouseClicked(MouseEvent m){
       if(m.getButton()==MouseEvent.BUTTON1)
       guns.playOnce();
   }
   public void mouseReleased(MouseEvent m){
       if(m.getButton()==MouseEvent.BUTTON1);
   }

它调用动画师类播放一组图像一次并停止。 在包括鼠标事件之前,动画师一直运作良好。如果在鼠标移动期间没有指定要执行的操作,我无法弄清为什么它不起作用。 (如果有明显的解决方案,我很抱歉,我不久前开始学习java。)

2个回答

7
在Java中,只有在鼠标按下并释放而不移动鼠标时,才会注册鼠标单击事件。这对于大多数用户来说很难实现,因此大多数UI元素(如按钮)会对鼠标按下和释放事件做出反应,并忽略“单击”事件。
对于按钮来说,更好的选择是向其添加一个ActionListener。然后,按钮本身将侦听鼠标事件并决定何时被单击。

谢谢!有关点击的提示将在以后节省我一些沮丧。 - Ryan
2
@trashgod:实际上,ButtonModel 只是跟踪状态 - 是 ButtonUI 监听鼠标事件并更新模型。 - Russell Zahniser

0

好的,我可能有点晚了,但我找到了一些解决方法:

如果你使用mousePressed(或mouseReleased,结果类似)事件,它会按照你的意图工作。代码中的所有内容都保持不变,只需更改方法名称和super.mousePressed(e);调用即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接