【发布时间】:2012-05-27 22:17:39
【问题描述】:
我在使用 JProgressBar 时遇到问题。我有一个可能需要一些时间的功能,并且我想要在执行该功能时处于不确定模式的进度条。我有一个激活此功能的按钮,我在调用该功能之前尝试setIndeterminate(true),之后尝试setIndeterminate(false),但我没有让进度条在任何时候移动。
我有这个代码:
progBar.setIndeterminate(true);
//delay(12);
//this.setEnabled(false);
Executor executor = java.util.concurrent.Executors.newSingleThreadExecutor();
executor.execute(new Runnable() {@Override
public void run() {
function1();
}});
//progBar.setIndeterminate(false);
//progBar.setVisible(false);
System.out.println("End Function");
//-........................
}
还尝试了function1(),没有任何新的执行程序。如果我不评论 setIndeterminate(false) 行,进度条不会启动,但如果我评论它,它总是处于不确定模式。
请注意,我使用 Netbeans IDE 设计一些 GUI,但我自己编写大部分内容(仅使用 NetBeans GUI 进行定位)。
【问题讨论】:
-
不要阻塞 EDT(事件调度线程)——当这种情况发生时,GUI 将“冻结”。为重复任务实现一个 Swing
Timer或为长时间运行的任务实现一个SwingWorker。有关详细信息,请参阅Concurrency in Swing。
标签: java swing progress-bar jprogressbar