java - 调用函数时按钮不会禁用

标签 java swing button

我真的迷失了: 在这种情况下,单击按钮时按钮应可禁用 (btnStart.setEnable(false))。 之后它应该调用位于另一个类中的函数。 一切正常,除了 btnStart 不会在单击时禁用,而是在调用函数之后禁用。

所以这个:

@Override
public void actionPerformed(ActionEvent buttonKLick) {
    if(buttonKLick.getSource() == this.btnStart){
        btnStart.setEnabled(false);
        try {
            Funktionen.fileFinder(Pfad); //The Function
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

将调用函数FileFinder然后禁用该按钮,尽管该按钮之前应该被禁用。

最佳答案

您可能遇到了线程问题,您的其他方法需要花费时间并锁定 Swing 事件线程,从而阻止 Swing 正确地将按钮绘制为禁用状态。如果使用后台线程会发生什么?

即,

if(buttonKLick.getSource() == this.btnStart){
    btnStart.setEnabled(false);
    new Thread(new Runnable() {
      public void run() {
        try {
          Funktionen.fileFinder(Pfad); //The Function
        } catch (FileNotFoundException e) {
          e.printStackTrace();
        }
      }
    }).start();
}
<小时/>

编辑:

请务必阅读:Lesson: Concurrency in Swing .

关于java - 调用函数时按钮不会禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300640/

相关文章:

java - 在 JTextArea 的字符串中设置多种文本颜色

java - 将 JOptionPane 输入转换为整数

java - 结合 JXTable 和 RXTable

java - Eclipse LogCat 中的错误 - Android

swift - 使用 AKPlayer 上的切换(开关)开关

java - 在Java中是空类型

java.lang.运行时异常 "Cannot run program"

javascript - css类只应用于一个按钮

java - 将 Java 对象转换为 JsonObject

java - 对于 Android 来说,一个对象向另一个对象发送消息的最佳方法是什么?