java - 使用 Swingworker 不断更新 GUI

标签 java swing user-interface jlabel swingworker

在我的代码中,用户按下一个按钮,然后我希望它调用一个 SwingWorker 后台线程,我基本上循环遍历一个列表,将其与其他数据交叉引用,然后使用 JLabel 为每个更新 GUI通过我的循环。问题是我知道我应该在 doInBackground() 中执行此操作,但我没有任何可返回的内容,而且我还想在每次循环时使用新的 JLabel 更新 JPanel。我该怎么做呢?谢谢!

最佳答案

这是一个我非常喜欢的完整示例 Swing Worker Example

您必须使用publish()并覆盖process()

示例:

class Worker extends SwingWorker<Void, String> {

    @Override
    protected void doInBackground() throws Exception {
       //here you make heavy task this is running in another thread not in EDT
       //process after some time call publish() 


    }

    @Override
    protected void process(List<String> chunks) {
        //this is executed in the EDT
        //here you update your label
    }
}

关于java - 使用 Swingworker 不断更新 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18449995/

相关文章:

java - 如果没有 Thread.sleep(...) 调用,线程代码将无法正常工作

java - Android java.lang.NullPointer。 Eclipse Juno - JDK7 路径错误?

java - 为什么 JFrame 输出与其 .paint 方法不同,以及如何解决这个问题?

java - 为 float 的 JToolBar 设置特定位置

c# - 具有右锚定静态面板的可变高度 FlowLayoutPanel

linux - ClearCase Linux GUI 错误比较/ checkin /描述/

java - 使用 Java 读取受密码保护的 Excel 文件(.xlsx)

Java 代码停止在 ChromeDriver 中查看详细日志?

java - 如何防止 JFrame 中的形状在调整窗口大小后消失

windows - wxPython:使框架位于一切之上