Событие windowClosing для Java jdesktop FrameView? - PullRequest
1 голос
/ 29 октября 2010

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

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

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

Ответы [ 2 ]

3 голосов
/ 29 октября 2010

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

alt text

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

Когда вы создаете Java Desktop Application, вы получаете три класса (при условии, что вы ввели 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"); 
        }

    });
}

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

2 голосов
/ 01 февраля 2012

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

Если вы хотите предоставить диалоговое окно подтверждения при закрытии окна, то вы должны изменить поведение выхода по умолчанию, добавив 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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...