我需要一个非常简单的(骨架)教程,用于在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的子类需要吗?)
非常感谢。
编辑:
我们只有很多宝贵的时间才能活着,没有任何方法可以按照我希望的那么少的代码或时间进行,所以我不会使用进度条。
答案 0 :(得分:6)
我需要一个非常简单的(骨架)教程,用于在Java中开发GUI的进度条。
答案 1 :(得分:3)
您可以将SwingWorker与JProgressBar结合使用。
另一种方法是执行您的任务(例如Runnable
)并定期更新JProgressBar
。但要注意,在Swing中,任何UI操作都必须在EDT上完成。 SwingWorker
有一个很好的属性来处理这个细节。您自己的解决方案必须使用SwingUtilities.invokeLater
。例如:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
progressBar.setValue(progressCounter++);
}
});
很多愚蠢的代码,不是吗?也许带有SwingWorker
的{{1}}最终是一个更好的解决方案......