Это сообщение немного устарело, но тем не менее.
Если вы инициализируете форму следующим образом:
JFrame firstForm = new JFrame();
firstForm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
firstForm.setSize(800, 600);
firstForm.setLocationRelativeTo(null);
firstForm.setVisible(true);
И, например, создайте или откройте другую форму с помощью кнопки:
JFrame secondForm = new JFrame();
secondForm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
secondForm.setSize(800, 600);
secondForm.setLocationRelativeTo(null);
secondForm.setVisible(true);
this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
Это удалит и уничтожит первое окно, не выходя из программы.
Ключ должен установить setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)
.
Это также вызывает события (я проверял это с WindowClosing
событие).