Когда JDialog
открывается из родительского окна или диалогового окна и устанавливается в модальное состояние, поток обработки событий для родительского окна останавливается. Это препятствует тому, чтобы родитель был сосредоточен или передал другие события, или по существу сделал что-нибудь, пока модальное диалоговое окно не закрыто. Поэтому вызов блокирует .
Вместо этого вы должны запустить событие из другого места, например, новый диалог вместо родительского окна, ИЛИ вместо модальных диалогов, использовать обычный JFrame
и установить его всегда сверху, используя * 1007. *. Это означает, что пользователь может продолжать использовать родительское окно, и события по-прежнему будут запускаться из него.
Приложение: в ответ на вашу проблему «программа концентрируется на показе его и не реагирует на событие, которое должно его скрывать»: когда вы создаете модальное диалоговое окно, как только вы делаете его видимым, оно блокируется родительское окно, пока оно не будет закрыто, включая запуск событий. Если вам нужно, чтобы новое всплывающее окно закрывалось программно, вам нужно или сделать немодальное всплывающее окно, или вам нужно выполнить последующий код в контексте нового всплывающего окна (например, запустить событие, когда оно становится видимым)