Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jprogress-Bar与并发_Java_Multithreading_Swing_Concurrency - Fatal编程技术网

Java Jprogress-Bar与并发

Java Jprogress-Bar与并发,java,multithreading,swing,concurrency,Java,Multithreading,Swing,Concurrency,我知道有很多关于这方面的问题,我在过去的两个小时里浏览了其中的大部分,寻找一个有效的答案,但没有一个成功 我的困境是我正在做一个地理编码器。我的程序只是一个gui,允许用户选择一个包含要读取地址的excel文件,然后按另一个按钮创建一个新的excel文件,其中包含所述数据以及与之链接的纬度和经度。现在我的客户端很可能一次运行数千行,这就是为什么我想添加一个进度条,而不是让程序挂起。但是,现在的问题是,正如预期的那样,该栏直到最后才更新 现在我读了关于swingworker的文章,但我似乎不知道如

我知道有很多关于这方面的问题,我在过去的两个小时里浏览了其中的大部分,寻找一个有效的答案,但没有一个成功

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

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

谢谢。

这里您有一个完整的我很想了解您是如何使用的

一个基本的例子:

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
      }

}
公共类MyWingWorker扩展SwingWorker{
@凌驾
公共字符串doInBackground(){
//在这里,您可以在另一个线程中执行繁重的任务
//您可以调用publish或setProgress,也可以同时调用两者
}
@凌驾
受保护的void done(){
//这里是作业完成后的调用,您可以在这里更新gui
}
公共作废流程(列表块){
//当您在此处后台发布时,将调用此函数
//您可以更新gui
}
}

如果需要,可以使用
mySwingWorker.execute()

在actionPerformed中执行此方法。感谢您的帮助。你第一句话没听懂吗?@Niehm你说得对;)考虑接受答案并鼓励所有帮助你的人。