2

我的应用程序中有一个简单的 JForm 和一个 JDialog。JDialog 框包含一个 JProgressBar 元素,我在 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);
    }

}
4

2 回答 2

1

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

也可以看看:

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

于 2012-02-15T06:45:15.897 回答
1

在 Swing 中遇到 Concurency问题,Swing 是单线程的,如果您从 EDT 更新 GUI,则不会发生任何事情,您必须实现SwingWorker来更新JProgressBar,例如此处的描述

于 2012-02-15T08:14:09.383 回答