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

Yat*_*oel 23 java user-interface jbutton

我创建了一个swings应用程序,GUI上有一个"开始"按钮.我希望每当我点击"开始"按钮时,应禁用启动按钮并启用"停止"按钮.

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

startButton.setEnabled(false);
stopButton.setEnabled(true);
Run Code Online (Sandbox Code Playgroud)

但是上面的代码并没有在GUI上创建所需的效果.

以上代码是否符合我的要求?

它也没有使用"repaint()".

编辑:

代码很长,所以我无法粘贴所有代码.但是,我可以告诉我更多关于代码的信息.

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

这个线程是否会产生任何问题?

akf*_*akf 26

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

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

您可以添加如下简单ActionListener:

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

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


cam*_*ckr 7

代码很长,所以我无法粘贴所有代码.

您的代码不起作用可能有多种原因.也许您已经将按钮变量声明了两次,因此您实际上并没有像您认为的那样更改启用/禁用按钮.也许你阻止了EDT.

您需要创建一个SSCCE才能在论坛上发布.

所以由你决定隔离问题.从一个简单的框架开始,有两个按钮,看看你的代码是否有效.一旦你开始工作,然后尝试启动一个只是睡眠10秒的线程,看看它是否仍然有效.

在编写200行程序之前,先了解basice如何工作.

学习如何做一些基本的调试,我们不介意读者.根据你对问题的口头描述,我们无法猜出你在做什么愚蠢的错误.

  • 同意了,你想要这把汤喂给你吗?你需要帮助,但是当你不清楚的时候,你会收到帮助.我创建了示例,如下所示,但在按下按钮时调用了SwingWorker,它在我的示例中运行良好.从事工作的小事做起,并建立你想要的东西. (2认同)