У меня есть comboBox 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 (). (Вот почему я передаю объект кадра «это»). Даже тогда метка не меняется.
Но единственное изменение, которое появляется в исходном тексте метки после выбора страны, - это последний текст, на который она установлена после завершения выбора страны. Промежуточные изменения в метке не отображаются в графическом интерфейсе. Почему это происходит и что не так с моим подходом? Должен ли я использовать другой подход с использованием потоков ??? Если да, то как?