Java 如何在方法完成之前创建JProgressBar而不重置值
主要的问题是,我不知道我的方法需要多长时间才能完成,我有两个线程,一个用于执行执行任务的方法,另一个用于执行进度条的进度,这是我的第一个线程:Java 如何在方法完成之前创建JProgressBar而不重置值,java,swing,jprogressbar,Java,Swing,Jprogressbar,主要的问题是,我不知道我的方法需要多长时间才能完成,我有两个线程,一个用于执行执行任务的方法,另一个用于执行进度条的进度,这是我的第一个线程: @Override public void run() { //This is a static variable, indicate when the method analyzeSentence finish finish = false; String sentence = analyzeSentence(); try
@Override
public void run() {
//This is a static variable, indicate when the method analyzeSentence finish
finish = false;
String sentence = analyzeSentence();
try {
Thread.sleep( 1000 );
} catch (InterruptedException e){
System.err.println( e.getMessage() );
}
finish = true;
}
在我的第二个线程(进度条线程)中,我有:
@Override
public void run() {
i = 1;
while(!Analyze.finish) {
i = (i > 100) ? 1 : i+1; //Here I have the problem
progressBar.setValue(i);
progressBar.repaint();
try {
Thread.sleep(this.value);
} catch (InterruptedException e) {
System.err.println(e.getMessage());
}
if(Analyze.finish) {
progressBar.setValue(100);
break;
}
}
}
问题是进度条将其值重置为零,但该方法仍然没有结束,因此进度条会一次又一次地填充。。。有没有办法获得该方法完成所需的时间长度?1)GUI更新应该从事件调度线程完成。2) 为了更快地获得更好的帮助,可以发布一个(最小完整的可验证示例)或(简短、自包含、正确的示例)。3) 请参阅..“有没有办法获得该方法完成所需的时间长度?”计算机程序不知道未来你需要把你的任务分成一些已知数量的部分。因为我们还不知道你在做什么,所以我们不能就如何做提供建议。@Bruno。。因为你不知道你的方法需要多长时间才能完成,如果你使用不确定的JProgressbar会更好…是的,我已经检查了这个方法,它工作得很好,并且有一些细节,比如@Radiodef说的关于拆分任务,我可以在进程的一部分结束时显示出来,看起来不错。谢谢大家的回答:)