У меня есть этот кусок кода в JFrame, который будет показывать пользователю прогресс во время импортирующех изображений:Почему мой JFrame не обновляет
public class LoadFrame implements Runnable {
JProgressBar progressbar;
JPanel loadpanel;
MainScreen mainscreen;
int progress;
JDialog mainloadframe;
public LoadFrame(String operation) {
mainloadframe = new JDialog();
JLabel operationlabel = new JLabel(operation);
progressbar = new JProgressBar(0, 100);
loadpanel = new JPanel();
mainloadframe.setSize(300, 75);
mainloadframe.setLocationRelativeTo(null);
mainloadframe.setLayout(new GridLayout(1, 2));
mainloadframe.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
mainloadframe.setAlwaysOnTop(true);
mainloadframe.setTitle(operation);
mainloadframe.setVisible(true);
progressbar.setValue(0);
progressbar.setStringPainted(true);
loadpanel.add(progressbar);
loadpanel.add(operationlabel);
mainloadframe.add(loadpanel);
}
public void setMainScreen(MainScreen mainscreen) {
this.mainscreen = mainscreen;
}
public void disposeLoadFrame() {
mainloadframe.dispose();
}
public void setProgress(int progress) {
this.progress = progress;
}
@Override
public void run() {
while (progress != 100) {
progressbar.setValue(progress);
}
}
}
фактических расчетливый прогресса также сделан в нить, но по какой-то причине индикатор прогресса не отображается на JFrame до момента, когда изображения будут импортированы. Я почти уверен, что это проблема Thread, но я не могу понять, что это. Небольшая помощь будет оценена.
обновления пользовательского интерфейса должна происходить на EDT. Выполнение этого из любого другого потока является неопределенным поведением и вызывает что-либо от ошибочного рисования, неправильные элементы управления появляются повсюду, правильно работая, чтобы вообще не работать. – Joey