Я согласен с комментарием Стефана Райха.
Очень полезным методом является Window.getOwnedWindows()
... и одним контекстом, где он полезен, если не обязателен, является TDD (тест-ориентированная разработка): в(интеграционный) тест, где у вас есть различные Window
объекты на дисплее (JDialog
и т. д.), если что-то пойдет не так, как обычно до завершения теста (или даже если он заканчивается нормально), вам часто захочется избавиться отподчиненные окна в коде очистки тестов.Примерно так (в JUnit):
@After
public void executedAfterEach() throws Exception {
// dispose of dependent Windows...
EventQueue.invokeAndWait( new Runnable(){
@Override
public void run() {
if( app.mainFrame != null ){
for( Window window : app.mainFrame.getOwnedWindows() ){
if( window.isVisible() ){
System.out.println( String.format( "# disposing of %s", window.getClass() ));
window.dispose();
}
}
}
}
});
}