Java Jprogress-Bar与并发
我知道有很多关于这方面的问题,我在过去的两个小时里浏览了其中的大部分,寻找一个有效的答案,但没有一个成功 我的困境是我正在做一个地理编码器。我的程序只是一个gui,允许用户选择一个包含要读取地址的excel文件,然后按另一个按钮创建一个新的excel文件,其中包含所述数据以及与之链接的纬度和经度。现在我的客户端很可能一次运行数千行,这就是为什么我想添加一个进度条,而不是让程序挂起。但是,现在的问题是,正如预期的那样,该栏直到最后才更新 现在我读了关于swingworker的文章,但我似乎不知道如何实现它。我的actionperformed方法是否应该只创建一个新线程来完成所有工作?如果是这样,我将如何获得工作的状态?在这个问题上我现在真的很困惑,希望能得到任何帮助 谢谢。这里您有一个完整的我很想了解您是如何使用的 一个基本的例子:Java Jprogress-Bar与并发,java,multithreading,swing,concurrency,Java,Multithreading,Swing,Concurrency,我知道有很多关于这方面的问题,我在过去的两个小时里浏览了其中的大部分,寻找一个有效的答案,但没有一个成功 我的困境是我正在做一个地理编码器。我的程序只是一个gui,允许用户选择一个包含要读取地址的excel文件,然后按另一个按钮创建一个新的excel文件,其中包含所述数据以及与之链接的纬度和经度。现在我的客户端很可能一次运行数千行,这就是为什么我想添加一个进度条,而不是让程序挂起。但是,现在的问题是,正如预期的那样,该栏直到最后才更新 现在我读了关于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
}
}
公共类MyWingWorker扩展SwingWorker{
@凌驾
公共字符串doInBackground(){
//在这里,您可以在另一个线程中执行繁重的任务
//您可以调用publish或setProgress,也可以同时调用两者
}
@凌驾
受保护的void done(){
//这里是作业完成后的调用,您可以在这里更新gui
}
公共作废流程(列表块){
//当您在此处后台发布时,将调用此函数
//您可以更新gui
}
}
如果需要,可以使用
mySwingWorker.execute()
在actionPerformed中执行此方法。感谢您的帮助。你第一句话没听懂吗?@Niehm你说得对;)考虑接受答案并鼓励所有帮助你的人。