Чтобы избежать блокировки EDT, ваш поиск данных должен выполняться в фоновом потоке. Я бы использовал SwingWorker для поиска и загрузки значений, так как это делает фоновый поток с другими вкусностями, которые делают его очень удобным для Swing. Я бы сделал свойство JComboBox включенным false
, пока все значения не были загружены, а затем включил бы его через setEnabled(true)
. Вы будете знать, что SwingWorker выполняется либо с помощью метода done()
(путем его переопределения), либо путем добавления PropertyChangeListener в SwingWorker и получения уведомлений, когда его состояние равно SwingWorker.StateValue.DONE
.
Один из способов узнать, что процесс завершен, состоит в том, что он увидит, когда поле со списком будет повторно включено. Если вам нужен более очевидный индикатор, вы можете отобразить JProgressBar или ProgressMonitor. Это может отображаться в диалоговом окне, если вы хотите оставить внешний вид графического интерфейса в основном без изменений.