Swing中的Java任务进度条

时间:2012-05-02 22:15:48

标签: java swing jprogressbar

我需要一个非常简单的(骨架)教程,用于在Java中开发GUI的进度条。进度条可以是“不确定的”,理想情况下具有可更新的文本标签。

这是一些骨架代码,我希望有人可以扩展到足以让某些东西发挥作用。

class MyFunView extends FrameView {

  // class vars and other stuff...

  @Action
  public void excitingButtonPressed() {

     /* I have n files to download */
     // Download file 1, set progress bar status to "downloading file 1"
     // ...
     // Download file n, set progress bar status to "downloading file 2"

  }

} 

基本上,我如何以及如何包装下载代码? (我知道有一些Task的子类需要吗?)

非常感谢。

编辑:

我们只有很多宝贵的时间才能活着,没有任何方法可以按照我希望的那么少的代码或时间进行,所以我不会使用进度条。

2 个答案:

答案 0 :(得分:6)

  

我需要一个非常简单的(骨架)教程,用于在Java中开发GUI的进度条。

答案 1 :(得分:3)

您可以将SwingWorkerJProgressBar结合使用。

另一种方法是执行您的任务(例如Runnable)并定期更新JProgressBar。但要注意,在Swing中,任何UI操作都必须在EDT上完成。 SwingWorker有一个很好的属性来处理这个细节。您自己的解决方案必须使用SwingUtilities.invokeLater。例如:

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        progressBar.setValue(progressCounter++);
    }
});

很多愚蠢的代码,不是吗?也许带有SwingWorker的{​​{1}}最终是一个更好的解决方案......