Java进度条与应用程序代码同时工作

Java进度条与应用程序代码同时工作,java,swing,progress-bar,event-dispatch-thread,Java,Swing,Progress Bar,Event Dispatch Thread,我是一名java初学者。请告诉我如何同时运行进度条和应用程序代码。换句话说,只要我的应用程序代码正在进行一些处理,我想让我的进度条增加。请用代码详细说明。 我认为我必须同时添加两个线程。一个线程更新progressbar线程,但我不确定这是否正确。 我已经为递增进度条编写了这段代码(硬编码) 类ProgressMonitor实现可运行{ 公开募捐{ jProgressBar1.SetStringPaint(真); //运行直到100%完成 而(进度

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

类ProgressMonitor实现可运行{
公开募捐{
jProgressBar1.SetStringPaint(真);
//运行直到100%完成
而(进度<100){
//更新进度条
jProgressBar1.setValue(++progress);
jProgressBar1.repaint();
试一试{
//睡眠0.25秒
睡眠(250);
}捕获(中断异常例外){
}
}
}   

问题基本上是长时间运行的任务阻塞了更新GUI的事件调度线程。一种解决方案是在一个特定的时间内完成这项工作

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


有关更多详细信息,请参见本教程的课程。

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

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


有关更多详细信息,请参见本教程的课程。

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


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


解决方案确实是使用
SwingWorker
。如果您想与
JProgressBar
结合使用,我建议您看看,其中有一个将
SwingWorker
JProgressBar
结合使用的示例。或者您可以在此网站上快速搜索并找到类似的示例他的解决方案确实是使用
SwingWorker
。如果您想与
JProgressBar
结合使用,我建议您看看,其中有一个将
SwingWorker
JProgressBar
结合使用的示例。或者您可以在此网站上快速搜索并找到类似的示例

       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) {
            }
        }

    }