Неблокирующее модальное диалоговое окно Swing

Вопрос глупый, но я действительно не могу заставить его работать: у меня есть какой-то длительный процесс в приложении Swing, который может занять несколько минут. Я хочу отобразить диалоговое окно прогресса для пользователя, пока этот процесс продолжается. Я также хочу запретить пользователю выполнять дальнейшие действия, например, нажимать кнопку во время процесса.

Если я выполняю процесс в EDT, это, очевидно, мешает конечному пользователю делать что-либо во время процесса. Но так как EDT занят обработкой, он никогда не находит время для воспроизведения содержимого диалога, поэтому я просто получаю план диалога.

Но если я выполняю процесс в рабочем потоке, конечный пользователь может нажимать кнопки и заставлять EDT манипулировать состоянием, которое рабочий также манипулирует одновременно, сплохие вещи как следствие. Если я сделаю диалог модальным, этого не произойдет, номодальный в Swing также подразумеваетблокированиетак что в тот момент, когда я звонюsetVisible(true), нить блокирует навсегда.

Таким образом, мое текущее «решение» состоит в том, чтобы использовать рабочий поток, а затем порождать отдельный поток, единственной целью которого является поглощение блокирующей природыsetVisible, Конечно, должно быть лучшее решение!

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

Ответы на вопрос(2)

Ваш ответ на вопрос