2012-02-15 2 views
2

У меня есть простой JForm и JDialog в моем приложении. JDialog коробка содержит eliment JProgressBar и I'put метод в JDialog, как,Как обновить jprogress bar

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

} 

ответ

1

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

1

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

Смотрите также:

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

+0

Я установил максимальное значение jprogressbar, но все же получил ту же проблему. – Harsha

+0

Чтобы прояснить вопрос, появился ли JProgressBar на JDialog, т. Е. Отображается индикатор с нулевым прогрессом? –

+0

Да, индикатор выполнения отображается на JDialog – Harsha