[英]Activate JProgressBar only during a method
我在使用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进行定位)。
您可能应该移动以下代码:
progBar.setIndeterminate(false);
progBar.setVisible(false);
调用function1()
之后,将其放入SwingUtilities.invokeLater()
块中。
现在,它的设置方式将在setIndeterminate(true)
调用之后立即execute()
-该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);
});
}});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.