Swing - Как закрыть форму изнутри? Как закрыть форму, не затрагивая родительскую форму?

Я создаю форму в наборе инструментов Swing.
Когда я хочу закрыть ее, я иду в JFrame и устанавливаю для нее значение visible false.
Поскольку фрейм создает класс формы Java, я могу легко это сделать. снаружи.

Когда у меня есть кнопка отмены, я обычно отправляю слушателя внутри формы, которая вызывает внешний:

 Jframe.setVisible (false)

Есть ли способ лучше ?


person Bick    schedule 16.05.2011    source источник


Ответы (2)


попробуйте это, если вам не нужно много кодировать! нажмите здесь, чтобы просмотреть изображение

person nilakantha singh deo    schedule 30.06.2016
comment
Спасибо, Роберт, некоторые опечатки! - person nilakantha singh deo; 30.06.2016

Класс SwingUtilities предоставляет метод для получения предка окна данного компонента. Вы можете получить родительское окно и вызвать setVisible или dispose или, возможно, только событие.

Window window = SwingUtilities.getWindowAncestor(this);
window.setVisible( false );
    // OR
window.dispose();
    // OR
WindowListener[] windowListeners = window.getWindowListeners();
windowListeners[0].windowClosing( null );
person oliholz    schedule 16.05.2011
comment
Я бы посоветовал вариант № 3, который выглядит как трюк, а не как стандартный код в Swing. Я даже не уверен, что он будет корректно работать во всех сценариях. - person jfpoilpret; 16.05.2011
comment
потому что это рискованный взлом, например. Плавающий диалог JToolBar - person oliholz; 16.05.2011