В Java Swing есть несколько способов дождаться закрытия JFrame
, в зависимости от требуемого функционала и сценария использования.
Один из наиболее распространенных способов - это использование слушателя события WindowListener
. Этот интерфейс содержит несколько методов, один из которых - windowClosing()
, вызываемый при закрытии окна. С помощью этого метода можно выполнить необходимые операции перед закрытием фрейма.
Вот пример кода, показывающий, как использовать WindowListener
для дожидания закрытия JFrame
:
import javax.swing.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Main { public static void main(String[] args) { JFrame frame = new JFrame("Пример JFrame"); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { // Выполнение необходимых операций перед закрытием фрейма System.out.println("Окно закрывается..."); // Дополнительный код // Закрытие фрейма frame.dispose(); } }); frame.setSize(300, 200); frame.setVisible(true); } }
С помощью метода setDefaultCloseOperation()
мы устанавливаем, что при закрытии фрейма необходимо выполнить действия, определенные в слушателе WindowListener
.
Другой способ - это использование класса WindowAdapter
, который является абстрактным классом, реализующим интерфейс WindowListener
. При использовании WindowAdapter
можно выбрать только необходимые методы для переопределения, вместо реализации всех методов интерфейса WindowListener
.
import javax.swing.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Main { public static void main(String[] args) { JFrame frame = new JFrame("Пример JFrame"); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.out.println("Окно закрывается..."); // Дополнительный код frame.dispose(); } }); frame.setSize(300, 200); frame.setVisible(true); } }
В обоих примерах выполняются необходимые действия в методе windowClosing()
, например, вывод сообщения о закрытии фрейма и закрытие фрейма с помощью метода dispose()
. Вы можете добавить свой код в этот метод, чтобы выполнить дополнительные операции перед закрытием фрейма.
Эти методы позволяют корректно обработать закрытие JFrame
в Java Swing и выполнить любые необходимые действия перед закрытием окна.