按钮事件仍然适用于禁用按钮

时间:2011-01-14 16:50:36

标签: java swing

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

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

如果单击该按钮,如何忽略代码并确实已禁用?

3 个答案:

答案 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和另一个线程在正在进行的模拟中使用该变量。