Задать вопрос
denisandroid
@denisandroid
BASH ,PHP , MYSQL, C++, JAVA . (PHP, JAVA,MYSQL)

Как уничтожить Window(JFrame)?

Есть окно, при нажатии на кнопку окно должно закрыться и уничтожиться. Как это сделать, зная что метод 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();

    }

}
  • Вопрос задан
  • 489 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы