我在使用JProgressBar
时遇到了麻烦。我有一个可能需要一些时间的函数,我想在执行函数时在不确定模式上有一个进度条。我有一个激活此功能的按钮,我在调用函数之前尝试setIndeterminate(true)
,然后setIndeterminate(false)
,但我没有随时移动进度条。< / p>
我有这段代码:
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进行定位)。
答案 0 :(得分:1)
您应该移动此代码:
progBar.setIndeterminate(false);
progBar.setVisible(false);
调用SwingUtilities.invokeLater()
后进入function1()
块。
现在它的设置方式会在setIndeterminate(true)
调用后立即执行 - execute()
方法不会阻止。
例如:
executor.execute(new Runnable() {
@Override
public void run() {
function1();
// now fix the progress bar
SwingUtilities.invokeLater(new Runnable() {
progBar.setIndeterminate(false);
progBar.setVisible(false);
});
}});