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作为应用程序的名称):
- DesktopApplication1.java
- DesktopApplication1AboutBox.java
- 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)); }