Диалоговое окно прогресса в Swing

Как я могу сделать так, чтобы модальное JDialog без кнопок появлялось на время, необходимое для завершения экземпляра Runnable, и чтобы этот экземпляр обновлял индикатор выполнения/сообщение в этом диалоговом окне?

Очевидно, спагетти-код может работать, но я ищу чистый дизайн, если он существует.


person Allain Lalonde    schedule 04.02.2009    source источник


Ответы (3)


Вы можете изучить ProgressMonitor. Автоматически появляется диалоговое окно с индикатором выполнения, если операция занимает много времени; см. Как использовать мониторы выполнения.

person Michael Myers    schedule 04.02.2009
comment
Кроме кнопки отмены? :П - person Michael Myers; 04.02.2009
comment
Да, это не идеально, но точно отвечает на вопрос. - person Allain Lalonde; 04.02.2009

Посмотрите описание проекта по следующему адресу: http://digilander.libero.it/carlmila/compmon/main.html

Это бесплатная библиотека Java, альтернативная Swing ProgressMonitor.

person carlo.milanesi    schedule 10.09.2009

Используйте класс монитора с глобальным экземпляром, который ваш код поддерживает в актуальном состоянии (я начинаю, я работаю, я на xxx%, я готов).

Затем монитор может решить показать диалог и сохранить его в актуальном состоянии. Позже вы можете просто заменить диалоговое окно индикатором выполнения, например, в строке состояния. Используйте интерфейс для монитора (методы: start(), update(), end(), error(), isAborted()), чтобы вы могли заменить его чем-то другим.

Вы можете расширить монитор так, чтобы он ждал 500 мс после start(), если есть end(), и не отображать диалоговое окно в этом случае и т. д.

Вот как это делает Eclipse, и это работает хорошо.

person Aaron Digulla    schedule 04.02.2009