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

Swingの同時実行性に問題があります。Swingはシングルスレッドであり、EDTからGUIを更新しても何も起こりません。JProgressBarを更新するには、SwingWorkerを実装する必要があります。次のとおりです。

于 2012-02-15T08:14:09.383 に答える
1

まず、上記のコードから、にを追加したことを示すことはできませんが、追加したJProgressBarJDialog思います。JProgressBar次に、コンストラクターまたはメンバー関数のいずれかから、の最大値を設定していませんsetMaximum()。これは、進捗が見られない理由である可能性があります。

関連項目:

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

于 2012-02-15T06:45:15.897 に答える