Jprogressbar和并发

时间:2013-07-18 19:21:43

标签: java multithreading swing concurrency

我知道有很多关于这方面的问题,过去2个小时我经历了大部分问题,寻找合适的答案,没有人做过。

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

现在我读到了关于swingworker但我似乎无法了解如何实现它。我的actionperformed方法除了创建一个完成所有工作的新线程之外什么都不做?如果是这样,我将如何获得工作的状态?我现在对这个问题非常困惑,并希望得到任何帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

这里有一个完整的example我真的很想了解你如何使用 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
      }

}

如果您想使用mySwingWorker.execute()

,则可以在actionPerformed中执行此方法