У меня есть диалог, содержащий несколько кнопок. Когда нажата конкретная кнопка, ActionListener вытесняет процесс, который занимает несколько секунд. В течение этого времени я хочу предоставить пользователю некоторую обратную связь. Чтобы сделать простой подход, у меня есть метка в диалоговом окне «Вычисление ...», которое изначально не видно. Сегмент кода выглядит следующим образомlabel.setVisible (true) ничего не делает, пока процесс не завершится
button_OpenHoursReport.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
lbl_Computing.setVisible(true);
new runAndRenderReport();
RunAndRenderReport.main(null);
lbl_Computing.setVisible(false);
}
});
Проблема в том, текст lbl_Computing не становится видимым, пока RunAndRenderReport не будет завершена. Очевидно, что это не очень помогает пользователю. Не знаю, куда идти отсюда. Это связано с потоками? Если да, я мог бы использовать некоторые рекомендации о том, как начать работу.
Спасибо. Я возьму paintImmediately подход сейчас, так как мой GUI может подождать несколько секунд, чтобы процесс завершился. Я буду смотреть в SwingWorker в будущем, когда мне нужен GUI, чтобы быть отзывчивым. – Paul
Для короткого детерминированного отставания также рассмотрим установку 'WAIT_CURSOR'. – trashgod