Как обновить панель jprogress
У меня есть простая 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 ответа
У вас есть проблема с Concurency в Swing, Swing является однопоточным и ничего не происходит, если вы обновляете GUI из EDT, вам нужно реализовать SwingWorker для обновления JProgressBar, пример с описаниями здесь
Во-первых, из приведенного выше кода не видно, что вы добавили JProgressBar
в JDialog
, но я предполагаю, что вы сделали это. Во-вторых, вы не установили максимальное значение JProgressBar
из конструктора или функции-члена setMaximum()
, Это может быть причиной отсутствия прогресса.
Смотрите также:
http://docs.oracle.com/javase/tutorial/uiswing/components/progress.html