如何创建JProgressBar而不重置值,直到我的方法完成

时间:2015-04-24 03:42:39

标签: java swing jprogressbar

主要的问题是我不知道我的方法需要多长时间才能完成,我有2个线程,一个执行执行该方法的方法,另一个执行进度条的进度,这是我的第一个帖子:

@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;
        }
    }
}

问题是进度条将其值重置为零,但方法仍未结束,因此进度条一次又一次地填充...有没有办法获得该方法完成时间的长度?

0 个答案:

没有答案