Есть окно, при нажатии на кнопку окно должно закрыться и уничтожиться. Как это сделать, зная что метод Window.getOwnerlessWindows() возвращает ссылки на все когда-либо созданные Window (в том числе и ссылку на уничтожаемое окно). Как тогда уничтожить Window?
Вот пример:
package javaapplication28;
import java.awt.Window;
import javax.swing.JFrame;
public class JavaApplication28 {
public static void main(String[] args) {
//
final JFrame frame = new JFrame("TEST");
frame.pack();
frame.setVisible(true);
//
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {}
//КРУГ 1, УЗНАЕМ НАШИ ФРЕЙМЫ
Window[] wind = Window.getOwnerlessWindows();
int a = 0;
int max = wind.length;
System.out.println("Ссылки на фреймы до уничтожения");
while(a!=max){
System.out.println(wind[a].getClass().getCanonicalName());
((JFrame)wind[a]).setTitle(((JFrame)wind[a]).getTitle().concat(" КРУГ 1"));
a = a + 1;
}
//
//ПЫТАЕМСЯ УБИТЬ
frame.dispose(); //УБИЛИ ОКНО
System.gc(); //НА ВСЯКИЙ
//
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
//КРУГ 2, ПОЛУЧАЕМ ССЫЛКУ НА ФРЕЙМ КОТОРЫЙ УБИТ, И ПОКАЗЫВАЕМ ЕГО ФРЕЙМ)
wind = Window.getOwnerlessWindows();
a = 0;
max = wind.length;
System.out.println("Ссылки на фреймы после уничтожения");
while(a!=max){
System.out.println(wind[a].getClass().getCanonicalName());
((JFrame)wind[a]).setTitle(((JFrame)wind[a]).getTitle().concat("КРУГ 2"));
wind[a].setVisible(true);
a = a + 1;
}
//В ИТОГЕ ДОЛЖНО ПОЛУЧИТСЯ TEST, КРУГ1, КРУГ2 В TITLE (и мы знаем сколько наш фрейм прошел кругов)в видимом убитом окне)
}
}).start();
}
}