Java进度条同时使用应用程序代码

时间:2012-02-11 14:26:03

标签: java swing progress-bar event-dispatch-thread

我是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 个答案:

答案 0 :(得分:3)

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

  

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

有关详细信息,另请参阅本教程的Concurrency in Swing课程。

答案 1 :(得分:1)

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

等示例

答案 2 :(得分:0)

您可以在此主题中了解有关此内容和SwingWorker的更多信息:

Manage GUI and EDT in a multi-task application