java如何在不同的线程中使用JProgressBar?
我在一个函数中使用POI来填充excel文档的内容(需要10秒),当我调用我的函数时,我想使用JProgressBar来查看进度,但是按钮和程序被阻塞了,我需要在其他线程中执行吗?我该怎么做呢?我的代码示例如下:
btnEjecutar.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
//the function
generarDocumento(nombre);
}
# 1 楼答案
尝试使用调用器,如下面的示例:
# 2 楼答案
事件侦听器在UI线程中执行。如果事件侦听器需要很长时间,UI将停止工作/锁定/阻止/挂起
我的猜测是
generarDocumento()
方法需要很长时间。如果希望UI继续工作,则必须在工作线程中运行它。Java文档中包含了几个如何做到这一点的示例:https://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.htmllast example in the tutorial包含如何更新进度条的演示代码:https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/components/ProgressBarDemoProject/src/components/ProgressBarDemo.java
注:链接内容受版权保护;所以我不能在这里复制它