如何更新jprogressbar

时间:2012-02-15 06:35:12

标签: java swing jprogressbar

我的应用程序中有一个简单的JForm和一个JDialog。 JDialog框包含一个JProgressBar eliment,我在JDialog中输出一个方法,

 public void updateProgress(int val){
        prgProgress.setValue(val); //prgProgress-> name of the JProgressBar
    }

更新进度条。

当我尝试从JForm更新JDialog中的进度条时,JProgressBar没有按预期更新,请告诉我可能是什么错误,

实施例

public class Status extends javax.swing.JDialog{
 private javax.swing.JProgressBar prgProgress = new javax.swing.JProgressBar;
.....

public void updateProgress(int val){
            prgProgress.setValue(val); //prgProgress-> name of the JProgressBar
        }

.....

}

public class MyForm extends javax.swing.JInternalFrame {
    Status s = new Status();
    s.setVisible(true);
    for(int i=0; i<100; i++){
        s.updateProgress(i);
    }

}

2 个答案:

答案 0 :(得分:1)

首先,我从上面的代码中看不出您已将JProgressBar添加到JDialog,但我认为您已经这样做了。 其次,您没有从构造函数或成员函数JProgressBar设置setMaximum()的最大值。这可能是没有进展的原因。

另见:

  

http://docs.oracle.com/javase/tutorial/uiswing/components/progress.html

答案 1 :(得分:1)

您遇到Concurency in Swing问题,Swing是单线程的,如果您从EDT更新GUI没有任何反应,您必须实施SwingWorker来更新JProgressBar,例如说明{ {3}}