Java jdesktop FrameView的windowClosing事件?

我正在尝试使用NetBeans编写GUI应用程序,我越来越厌倦了它。

我使用NetBeans构建了一个“Java桌面应用程序”。 它将主窗体创建为org.jdesktop.application.FrameView后代。 我想知道在表单关闭时添加一些代码的正确方法是什么。

到目前为止,我目前的尝试是在构造函数中使用getFrame().addWindowListener添加一个WindowAdapter对象,这不起作用。 因为在尚未构造框架时无法调用getFrame 。 我不能把它看作是GUI构建器的某个地方。

NetBeans IDE 6.9.1中提供的Java Desktop Application仅用于历史目的,不建议在项目中使用。 当我们尝试使用Java Desktop Application选项创建新项目时,NetBeans IDE 6.9.1也会显示此警告。

替代文字

假设您仍在使用Swing应用程序框架并且您想要向主窗口添加一个windowClosing侦听器,那么让我回答您的问题。

创建Java桌面应用程序时,您将获得三个类(假设您键入了DesktopApplication1作为应用程序的名称):

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

要添加窗口关闭侦听器,请在DesktopApplication1类的configureWindow方法中编写代码,如下所示:

 @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"); } }); } 

带着敬意
Tushar Joshi,那格浦尔

这只是Tushar答案的补充。

如果要在窗口关闭时提供确认对话框,则必须通过在startup method添加ExitListener并使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)); }