如何在Java中禁用javax.swing.JButton?


问题内容

我创建了一个swings应用程序,并且GUI上有一个“开始”按钮。我希望每当我单击该“开始”按钮时,都应禁用开始按钮,并启用“停止”按钮。

为此,我在“开始”按钮的“ ActionPeformed(…)”方法中编写了以下代码

startButton.setEnabled(false);
stopButton.setEnabled(true);

但是以上代码并未在GUI上产生所需的影响。

上面的代码对我想要做的正确吗?

它也不能与“ repaint()”一起使用。

编辑:

代码很长,所以我不能粘贴所有代码。我可以告诉更多有关代码的信息。

在“开始”按钮的“ ActionPeformed”方法中,调用以上两个语句后,我正在执行“ SwingWorker”线程。

这个线程有什么问题吗?


问题答案:

为此,我在“开始”按钮的“ ActionPeformed(…)”方法中编写了以下代码

你需要的代码是在actionPerformed(...)ActionListener使用开始按钮注册,而不是开始按钮本身。

您可以添加一个简单的ActionListener如下:

JButton startButton = new JButton("Start");
startButton.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent ae) {
        startButton.setEnabled(false);
        stopButton.setEnabled(true);
     }
   }
 );

请注意,final如果要在本地范围内创建匿名侦听器,则上述示例中的startButton将需要在上面的示例中。