【问题标题】:Java Task Progress Bars in SwingSwing 中的 Java 任务进度条
【发布时间】:2012-05-02 22:15:48
【问题描述】:

我需要一个关于在 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 的子类?)

非常感谢。

编辑:

我们都只有这么多宝贵的时间来活着,没有任何方法可以像我希望的那样用尽可能少的代码或时间完成,所以我不会使用进度条。

【问题讨论】:

标签: java swing jprogressbar


【解决方案1】:

我需要一个关于用 Java 开发 GUI 的进度条的非常简单(基本)教程。

【讨论】:

  • 您是如何在这么短的时间内得出如此惊人的清单的?!?
  • 不需要,谢谢。我的奖励来自于看到你的答案。 :)
【解决方案2】:

您可以将SwingWorkerJProgressBar 结合使用。

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

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

很多代码都是为了一个愚蠢的东西,不是吗?也许带有PropertyChangeListenerSwingWorker 最终是一个更好的解决方案......

【讨论】:

  • "很多代码都是为了一个愚蠢的事情,不是吗?" - 是的,所以把进度条搞砸了.. 不值得,对不起用户。
  • 嗯,它仍然可以在 PrepertyChangeListener 中 - 但使用不同类型的样板(侦听器本身,没有 invokeLater)。
  • @Anonymous 我认为 OP 需要解释 this onethis one,地狱为什么只有我的 up_votes
猜你喜欢
  • 2011-01-11
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
相关资源
最近更新 更多