0

我知道有很多关于这个的问题,我在过去的 2 个小时里经历了大部分问题,寻找一个可行的答案,但没有一个成功。

我的困境是我正在制作一个地理编码器。我的程序只是一个 gui,它允许用户选择一个包含要读取的地址的 excel 文件,然后按另一个按钮来创建一个新的 excel 文件,其中包含所述数据以及与之链接的纬度和经度。现在我的客户很可能一次运行数千行,这就是为什么我想添加一个进度条而不是让程序挂起。但是,现在的问题是,正如预期的那样,该栏直到最后才更新。

现在我读到了swingworker,但我似乎不知道如何实现它。我的 actionperformed 方法是否应该只创建一个完成所有工作的新线程?如果是这样,我将如何获得工作的状态?我现在在这个问题上真的很困惑,希望能得到任何帮助。

谢谢你。

4

1 回答 1

1

Here你有一个完整的例子我真的很想了解你如何使用 SwingWorker

一个基本的例子:

public class MySwingWorker extends SwingWorker<String,String> {

       @Override
       public String doInBackground() {
           //here you make heavy task in another thread
           // you call publish or setProgress or both
       }

       @Override
       protected void done() {
           //here is call when job is done, you can update here your gui
       }

      public void process(List<String> chunks){
          // this is called when you do publish in the background here
          // you update the gui
      }

}

如果你愿意,你可以在你的 actionPerformed 中执行这个方法mySwingWorker.execute()

于 2013-07-18T19:36:12.900 回答