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

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

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

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

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

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

编辑:

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

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

这个线程有什么问题吗?

最佳答案



您需要该代码位于通过“开始”按钮注册的actionPerformed(...)ActionListener中,而不是在“开始”按钮本身中。

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

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

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

09-30 21:51