MouseListener没有捕获mousePressed / Clicked

时间:2014-04-30 23:52:56

标签: java actionlistener mouselistener

好的,所以我不确定为什么我的MouseListener不能正常工作,但我认为这可能是因为我在课堂上实现了ActionListenerMouseListener。这会导致课程出现问题吗?

actionPerformed方法:

public void actionPerformed(ActionEvent e){...
      ...
}

mouseClicked方法:

public void mouseClicked(MouseEvent arg0) {
    ...
}

是因为它只是在监听actionPerformed方法并且从不进入MouseListener吗?如果我怀疑是正确的,我将如何让它一起工作?

编辑:我已将其缩小到MouseListener中的错误。它根本不会从鼠标获得任何输入,我是否必须指定它应该收听的区域?

public void mousePressed(MouseEvent arg0) {
        System.out.println("Inside timer is running");

        if(timer.isRunning() == true){
            System.out.println("Inside timer is running");
            Point p = arg0.getPoint();
        }
}

1 个答案:

答案 0 :(得分:2)

你问:

  

好的,所以我不确定为什么我的MouseListener不起作用,但我想这可能是因为我在课堂上实现了ActionListener和MouseListener。这会导致课程出现问题吗?

不,这根本不会影响事情。您的问题很可能出现在未显示的代码中。

说了这些之后,我想补充一点,我的GUI类几乎都没有实现这些或其他监听器接口,因为我觉得这会要求班级承担太多责任,使其变得更难现在调试或稍后升级。相反,我赞成然后调用控制方法的匿名内部类,或者完全独立的控件/监听器类。


修改
我不认为您发布的代码和文字足以让我们理解您的问题,足以解决问题,而不是说问题出在其他地方。如果您很快得不到合适的答案,请考虑创建并发布Minimal, Complete, and Verifiable Example Program


编辑2
您在评论中说明:

  

我不认为我可以发布任何可能清除它的代码,因为这是一个庞大的程序。这个类只有300行,但我知道其他一切工作只是MouseListener不能正常工作

由你决定下一步应该做什么,但如果这是我的代码,并且我遇到了这些问题,我会更多地尝试隔离问题,包括重构我的代码,以便我最终提出来使用最小的关键代码来重现问题。您可能在调试阶段过早地来到这里,迫使您发布"如果"场景,让我们耸耸肩说,"谁知道"。


编辑3
你问:

  

我是否必须指定应该收听的区域?

您必须指定要收听的组件。 MouseListeners侦听组件。但同样,这只是更多的事情,如果""和#34;谁知道" ...