2012-02-11 56 views
0

我是一名java初学者。请让我知道我该如何同时运行进度条和我的应用程序代码。换句话说,我想让我的进度条增加只要我的应用程序代码正在做一些处理。请用代码详细说明它。 我认为我必须同时添加两个线程。一个线程更新进度条线程,但我不确定它是否正确。 我写了这个代码递增进度条(硬编码)Java进度条与应用程序代码同时工作

 class ProgressMonitor implements Runnable { 

    public void run() { 
     jProgressBar1.setStringPainted(true); 
     //run untill 100% complete 
     while (progress < 100) { 
      //update the progressbar 
      jProgressBar1.setValue(++progress); 
      jProgressBar1.repaint(); 
      try { 

       //Sleep for .25 second 
       Thread.sleep(250); 
      } catch (InterruptedException ex) { 
      } 
     } 

    } 

回答

3

的问题基本上是在长期运行的任务阻塞事件调度线程更新GUI。一种解决方案是在SwingWorker中完成这项工作。

在后台线程中执行冗长的GUI交互任务的抽象类。 ..

另请参阅教程的Concurrency in Swing了解更多详情。

1

的解决方案确实是使用SwingWorker。如果您想结合使用JProgressBar,我建议您查看JProgressBar tutorial,该示例使用SwingWorkerJProgressBar的组合。或者你在这个网站上快速搜索并找到像this one