У меня есть поле со списком jComboBox1, которое содержит названия всех стран мира... При выборе одной из стран второе поле со списком jComboBox2 заполняется всеми состояниями в стране, выбранной в jComboBox1. Теперь я хочу отображать индикатор выполнения или сообщение «Загрузка ...», когда состояния в выбранной стране заполняются и автоматически закрываются после завершения.
Код такой...
public void actionPerformed(ActionEvent e){
if(e.getSource()==jComboBox1){
if(jCombobox1.setSelectedIndex()!=-1){
Country country=new Country();
country.populateStates(jComboBox2,label,this);
//"label" is of type JLabel whose text is is set to show the progress
//"this" refers to the current frame to repaint once label is changed
}
}
}
Я подумал, что могу использовать JLabel во фрейме, видимость и текст которого можно установить с помощью setVisible() и setText. Обратите внимание, что «Страна» — это другой класс, и я передаю эту метку его методу populateStates, где я использую label.setText («Загрузка сведений о состоянии:» + состояние) и выполняю frame.repaint(). (Вот почему я передаю объект кадра «это»). Даже в этом случае этикетка не меняется.
Но единственное изменение, которое появляется в начальном тексте метки после выбора страны, — это последний установленный текст после завершения выбора страны. Промежуточные изменения метки не отображаются в графическом интерфейсе. Почему это происходит и что не так с моим подходом? Должен ли я использовать другой подход с использованием потоков??? Если да, то как??