private void button_Clicked_download(MouseEvent e) {
button_dl.setEnabled(false);
System.out.println("Button Clicked.");
}
单击按钮时,该按钮看起来已禁用。但是按钮仍然执行MouseEvent下的代码,我看到“Button Clicked”。在调试控制台中。
如果单击该按钮,如何忽略代码并确实已禁用?
答案 0 :(得分:10)
然而,按钮仍然执行 MouseEvent 下的代码,我看到“Click Clicked”。在调试控制台中。
这正是您不应该将MouseListener与JButton一起使用而是使用ActionListener的原因。解决方案当然很明显 - 摆脱MouseListener,而是将ActionListener添加到感兴趣的JButton中。
答案 1 :(得分:1)
您需要使用ActionListener而不是MouseClickListener。
即使已禁用按钮,也会在逻辑上单击该按钮,因此将执行click事件
答案 2 :(得分:1)
实际上有一种非常简单的方法可以在java中启用和禁用使用鼠标侦听器的按钮。
class HoldListen extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
JButton bt = (JButton)e.getSource();
if (!bt.isEnabled()) {
return;
}
// Do code
}
}
我在尝试创建类似的东西时发现了你的问题,这就是我解决它的方法。 所有MouseListener的方法都返回void,因此它非常好用。在我的情况下,回到ActionListener需要大量额外的工作,而MouseListener是完美的工作。按下设置一个变量,其中Release undid和另一个线程在正在进行的模拟中使用该变量。