Как обновить jprogress bar - PullRequest
       25

Как обновить jprogress bar

2 голосов
/ 15 февраля 2012

У меня есть простая JForm и JDialog в моем приложении. Окно JDialog содержит элемент JProgressBar, и я буду указывать метод в JDialog как,

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

для обновления индикатора выполнения.

Когда я пытаюсь обновить индикатор выполнения в моем JDialog из JForm, JProgressBar не обновляется должным образом, пожалуйста, скажите, в чем может быть ошибка,

Ex.

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 ]

1 голос
/ 15 февраля 2012

У вас есть проблема с Concurency в Swing , Swing является однопоточным и ничего не происходит, если вы обновляете GUI из EDT, вам нужно реализовать SwingWorker для обновления JProgressBar , пример с описаниями здесь

1 голос
/ 15 февраля 2012

Во-первых, из приведенного выше кода не видно, что вы добавили JProgressBar в JDialog, но я предполагаю, что вы это сделали.Во-вторых, вы не установили максимальное значение JProgressBar из конструктора или функции-члена setMaximum().Это может быть причиной отсутствия прогресса.

См. Также:

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

...