Добавление обработки событий в диалоговое окно Jframe

#java #sqlite #popup #jframe

#java #sqlite #всплывающее окно #jframe

Вопрос:

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

Вот код, который создает jframe

 javax.swing.JFrame optionFrame = new javax.swing.JFrame();
     JOptionPane.showMessageDialog(optionFrame, "Tests Complete. Screenshots and Results can be found at C://Features");
     optionFrame.toFront();
     optionFrame.repaint();
     this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
 

Ответ №1:

Просто сделайте это сразу после отображения диалогового окна, но до this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));

Также удалите часть:

  optionFrame.toFront();
 optionFrame.repaint();
 

эта строка (всплывающее окно MessageDialog):

  JOptionPane.showMessageDialog(optionFrame, "Tests Complete. Screenshots and Results can be found at C://Features");
 

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

основываясь на вашем примере, это может быть:

  ...
 JOptionPane.showMessageDialog(optionFrame, "Tests Complete. Screenshots and Results can be found at C://Features");
 // do your clean-up work here (probably invoke some clean up service method)
 this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
 

Комментарии:

1. можете ли вы привести пример того, как это можно было бы сделать? Нужен ли мне для этого отдельный метод? Обычно события обрабатываются отдельным методом, верно?