Java колебание, закрывающее окно сообщения - PullRequest
1 голос
/ 08 августа 2011

Когда пользователь закрывает мою программу, программе необходимо завершить некоторые фоновые процессы, для завершения которых может потребоваться некоторое время. Поэтому я хочу, чтобы пользователь был уведомлен с появлением окна сообщения и информированием пользователя, а затем, когда все фоновые процессы завершены, окно сообщения должно исчезнуть.

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

Как я могу это сделать?

Ответы [ 4 ]

6 голосов
/ 08 августа 2011

Вы можете добавить a WindowListener к вашему высокому уровню JFrame, прослушать событие windowClosing , а затем открыть диалоговое окно. Что касается закрытия диалогового окна, вы, вероятно, захотите использовать JProgressBar, чтобы сообщить пользователю, сколько осталось времени (см. учебник ). Предполагая, что вы используете SwingWorker , вы можете заставить SwingWorker, выполняющий работу, вызывать метод dispose JDialog, когда он завершит обработку (в рамках его метода done ).

1 голос
/ 08 августа 2011

Вы можете создать модальное java.swing.JDialog с помощью ProgressBar

0 голосов
/ 08 августа 2011

Хотя представленные решения довольно чисты, они, однако, не очень эффективны, поскольку, только слушая основной JFrame, у вас не будет возможности использовать его для других механизмов закрытия (подумайте о Alt+F4, Ctrl-Cв командной строке и других).

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

0 голосов
/ 08 августа 2011

Это на самом деле проще, чем вы думаете.Чтобы захватить событие закрытия окна, вам нужно addWindowListener(WindowListener wl) для рассматриваемого JFrame.Затем вы можете переопределить метод WindowClose в любом классе, который вам нравится, что позволит вам соответствующим образом настроить функциональность.

Я только что нашел это по этой ссылке .

...