Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按钮事件仍在禁用按钮的情况下工作_Java_Swing - Fatal编程技术网

Java 按钮事件仍在禁用按钮的情况下工作

Java 按钮事件仍在禁用按钮的情况下工作,java,swing,Java,Swing,当我单击按钮时,按钮看起来已禁用。但是按钮仍然执行MouseEvent下的代码,我在调试控制台中看到“button Clicked.” 如果单击该按钮,它将忽略代码并确实被禁用,我如何使其如此 但是按钮仍然执行MouseEvent下的代码,我在调试控制台中看到“button Clicked.” 这就是为什么不应该将鼠标侦听器与JButton一起使用,而应该使用ActionListener。解决方案当然是显而易见的——去掉MouseListener,而是将ActionListener添加到感兴趣的

当我单击按钮时,按钮看起来已禁用。但是按钮仍然执行MouseEvent下的代码,我在调试控制台中看到“button Clicked.”

如果单击该按钮,它将忽略代码并确实被禁用,我如何使其如此

但是按钮仍然执行MouseEvent下的代码,我在调试控制台中看到“button Clicked.”


这就是为什么不应该将鼠标侦听器与JButton一起使用,而应该使用ActionListener。解决方案当然是显而易见的——去掉MouseListener,而是将ActionListener添加到感兴趣的JButton中。

您需要使用ActionListener而不是MouseClickListener

private void button_Clicked_download(MouseEvent e) {
      button_dl.setEnabled(false);
      System.out.println("Button Clicked.");
}

您的按钮在逻辑上被单击,即使它被禁用,因此单击事件将执行

在java中,实际上有一种非常简单的方法来启用和禁用使用鼠标侦听器的按钮

private void button_Clicked_download(MouseEvent e) {
      button_dl.setEnabled(false);
      System.out.println("Button Clicked.");
}
我在尝试创建类似的东西时发现了你的问题,我就是这样解决的。
MouseListener的所有方法都返回void,因此效果非常好。在我的情况下,回到ActionListener需要做很多额外的工作,而MouseListener则非常适合这项工作。按set可设置一个变量,该变量将释放UNDD,另一个线程将在正在进行的模拟中使用该变量。

谢谢。我忘了ActionListener。我把它改成那样,现在它工作得很好。谢谢