Взгляните на JDialog
.Если вы установите его модальным, он будет запускать свою собственную обработку событий, чтобы поддерживать актуальность графического интерфейса, в то же время захватывая события мыши и клавиатуры для собственного использования.
Я посмотрел на код, который он использует, и на самом деле это не так.что-то, что вы хотите попробовать изобрести заново.
Если вы запустите его немодально, вам, вероятно, потребуется добавить слушатель, который будет вызван, когда он наконец закроется.Это делается с помощью addWindowListener
и WindowAdapter, который переопределяет windowClosing
.
Что касается параметра owner
для конструктора, я использую
Window w = (Window) SwingUtilities.getAncestorOfClass(Window.class, comp);
, где comp - это некоторый видимый компонент.
Это работает, потому что всегда есть окно верхнего уровня, независимо от того, работает ли оно как апплет или приложение.