Событие 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):
- DesktopApplication1.java
- DesktopApplication1AboutBox.java
- 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));
}