繁体   English   中英

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

[英]java jprogressbar hangs during heavy operation

我正在编写一个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教程中有关Swing中的并发性的部分,以获取对该问题的完整说明。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM