Событие windowClosing для Java jdesktop FrameView?

Я пытаюсь написать приложение с графическим интерфейсом, используя NetBeans, и я все больше устаю от этого..

Я создал "Настольное приложение Java" с использованием NetBeans. Это создает основную форму как org.jdesktop.application.FrameView Потомок. Я хотел бы знать, как правильно добавить некоторый код, который выполняется, когда форма закрыта.

Моя текущая попытка состоит в том, чтобы добавить WindowAdapter использование объекта getFrame().addWindowListener в конструкторе, который не работает. Потому что ты не можешь позвонить getFrame пока рамка еще не построена. И я не могу видеть это как событие где-то в GUI Builder.

2 ответа

Решение

Настольное приложение Java, которое доступно в IDE NetBeans 6.9.1, предназначено только для исторических целей и не рекомендуется для использования в проектах. Среда IDE NetBeans 6.9.1 также показывает это предупреждение, когда мы пытаемся создать новый проект, используя опцию Java Desktop Application.

альтернативный текст

Учитывая это, позвольте мне ответить на ваш вопрос, предполагая, что вы все еще используете платформу приложений Swing и хотите добавить слушатель windowClosing в главное окно.

Когда вы создаете Java-приложение для рабочего стола, вы получаете три класса (при условии, что в качестве имени вашего приложения вы ввели DesktopApplication1):

  1. DesktopApplication1.java
  2. DesktopApplication1AboutBox.java
  3. DesktopApplication1View.java

Чтобы добавить слушатель закрытия окна, напишите код в методе configureWindow класса DesktopApplication1 следующим образом:

@Override protected void configureWindow(java.awt.Window root) {

    root.addWindowListener(new WindowAdapter() {

        @Override
        public void windowClosing(WindowEvent e) {
            // write your code here
            System.out.println("Window Closing"); 
        }

    });
}

с уважением
Тушар Джоши, Нагпур

Это всего лишь дополнение к ответу Тушара.

Если вы хотите предоставить диалоговое окно подтверждения при закрытии окна, то вы должны изменить поведение выхода по умолчанию, добавив ExitListener в startup method и делает canExit возврат метода false:

@Override
protected void startup() {
    addExitListener(new ExitListener() {
        public boolean canExit(EventObject event) {
            return false;
        }
        public void willExit(EventObject event) {
        }
    });
    show(new DesktopApplication1View(this));
}
Другие вопросы по тегам