java jprogressbar在繁重的操作期间挂起

我正在编写一个java程序,在我调用一个大量使用CPU的方法之前,我在其上显示一个带有JProgressBar的框架。 虽然我在调用方法之前显示它,但是在方法结束之前不会显示JProgressBar。 进度条不会以任何方式与方法交互(但)这就是我感到困惑的原因。 它是这样的:

progressbarframe.setVisible(true); // it is a indeterminate progress bar heavyLoadMethod(); progressbarframe.dispose(); 

框架显示,但进度条在方法期间未初始化。 有没有办法在不使用线程的情况下解决这个问题? 什么是最简单的方法?

感谢您的时间

你应该在一个单独的线程中调用heavyLoadMethod 。 你可以使用java.util.concurrent.Executor

 Executor executor = java.util.concurrent.Executors.newSingleThreadExecutor(); executor.submit(new Runnable() { public void run() { heavyLoadMethod();}}); 

现在,该方法将在一个单独的线程中调用,进度条将正确显示。

您阻止EDT重新绘制GUI。

阅读有关Swing中的Concurrency的Swing教程中的部分,以获取对该问题的完整说明。

另外,请阅读“如何使用进度条”一节作为工作示例。