好的,所以我不确定为什么我的MouseListener不能正常工作,但我认为这可能是因为我在课堂上实现了ActionListener
和MouseListener
。这会导致课程出现问题吗?
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();
}
}
答案 0 :(得分:2)
你问:
好的,所以我不确定为什么我的MouseListener不起作用,但我想这可能是因为我在课堂上实现了ActionListener和MouseListener。这会导致课程出现问题吗?
不,这根本不会影响事情。您的问题很可能出现在未显示的代码中。
说了这些之后,我想补充一点,我的GUI类几乎都没有实现这些或其他监听器接口,因为我觉得这会要求班级承担太多责任,使其变得更难现在调试或稍后升级。相反,我赞成然后调用控制方法的匿名内部类,或者完全独立的控件/监听器类。
修改强>
我不认为您发布的代码和文字足以让我们理解您的问题,足以解决问题,而不是说问题出在其他地方。如果您很快得不到合适的答案,请考虑创建并发布Minimal, Complete, and Verifiable Example Program。
编辑2
您在评论中说明:
我不认为我可以发布任何可能清除它的代码,因为这是一个庞大的程序。这个类只有300行,但我知道其他一切工作只是MouseListener不能正常工作
由你决定下一步应该做什么,但如果这是我的代码,并且我遇到了这些问题,我会更多地尝试隔离问题,包括重构我的代码,以便我最终提出来使用最小的关键代码来重现问题。您可能在调试阶段过早地来到这里,迫使您发布"如果"场景,让我们耸耸肩说,"谁知道"。
编辑3
你问:
我是否必须指定应该收听的区域?
您必须指定要收听的组件。 MouseListeners侦听组件。但同样,这只是更多的事情,如果""和#34;谁知道" ...