Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing应用框架中的窗口关闭_Java_Swing_Swingx_Swing App Framework - Fatal编程技术网

Java Swing应用框架中的窗口关闭

Java Swing应用框架中的窗口关闭,java,swing,swingx,swing-app-framework,Java,Swing,Swingx,Swing App Framework,我正在为基于Swing的Java应用程序使用Swing应用程序框架JSR(296) 与AboutBox类似,我遵循了@Action的用法,并在我的项目中添加了一些JDialog类 问题是,当我关闭主框架时,我的应用程序仍然在后台运行。 为了克服这个问题,我在主应用程序类的configureWindow()中添加了以下代码: protected void configureWindow(java.awt.Window root) { root.addWindowListener(new

我正在为基于Swing的Java应用程序使用Swing应用程序框架JSR(296)

与AboutBox类似,我遵循了@Action的用法,并在我的项目中添加了一些JDialog类

问题是,当我关闭主框架时,我的应用程序仍然在后台运行。 为了克服这个问题,我在主应用程序类的configureWindow()中添加了以下代码:

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

    root.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
        // write your code here
            Application.getInstance(MyApp.class).exit();
        }
    });
}
但通过这种修改,每当我关闭对话框(包括AboutBox)时,它也会关闭主框架

我应该怎么做才能阻止整个应用程序退出并关闭对话框

更新: 我正在使用NetBeans IDE 7.01,它允许创建Swing应用程序框架项目。 它生成一个项目框架,如下所示:

MyApp 
|--myapp 
|   |--MyApp.java
|   |--MyAppAboutBox.java
|   |--MyAppView.java
|
|--myapp.resources
    |--MyApp.properties
    |--MyAppAboutBox.properties
    |--MyAppView.properties
NetBeans IDE允许从窗口->属性菜单添加操作

MyApp类扩展了我的主类org.jdesktop.application.SingleFrameApplication

MyAppView扩展了FrameView
,它是我的主视图

javax.swing.JDialog的实现类位于
myapp.view
包中。

该类有一个方法调用,返回正在关闭的窗口

窗口关闭
方法中,您可以检查:如果窗口是主应用程序窗口,请使用您当前拥有的代码。如果不是,就打电话

编辑:我没有注意到您正在应用程序中创建自定义对话框。也许你忘了处理它们?您应该添加类似“自动生成关于”框中的代码:

@Action public void closeAboutBox() {
    dispose();
}
并在对话框关闭时调用此操作。如果这不是问题所在,线程转储可能会帮助您在关闭主窗口时找出哪个线程正在运行。

该类有一个方法调用,该调用返回正在关闭的窗口

窗口关闭
方法中,您可以检查:如果窗口是主应用程序窗口,请使用您当前拥有的代码。如果不是,就打电话

编辑:我没有注意到您正在应用程序中创建自定义对话框。也许你忘了处理它们?您应该添加类似“自动生成关于”框中的代码:

@Action public void closeAboutBox() {
    dispose();
}

并在对话框关闭时调用此操作。如果这不是问题所在,线程转储可能会帮助您在关闭主窗口时找出正在运行的线程。

我认为您实际需要的是
setDefaultCloseOperation(JFrame.EXIT\u ON\u close)。看一看…

我认为您实际上在寻找的是
setDefaultCloseOperation(JFrame.EXIT\u ON\u CLOSE)。看看…

你可能想看看这个:看看他是如何关闭对话框的。谢谢,我想,在这里,我对org.jdesktop.application.SingleFrameApplicationhmm的configuerWindow()的实现有问题。。如果没有看到sscce,没有什么是可行的(注意:单机版不包括对Netbeans的依赖:-)-关闭main默认情况下应关闭所有相关/辅助窗口/对话框,无需手动操作。它从这开始-即使从X close选项关闭后,应用程序仍在后台运行(windows环境中的右上角)正如我所说的:它不应该-你要么显示sscce,要么独自一人…水晶球太过时了,在这里被禁止:-)你可能想看看这个:看看他是如何关闭对话框的。谢谢,我想,在这里,我对configuerWindow()的实现有问题org.jdesktop.application.SingleFrameApplicationhmm的。。如果没有看到sscce,没有什么是可行的(注意:单机版不包括对Netbeans的依赖:-)-关闭main默认情况下应关闭所有相关/辅助窗口/对话框,无需手动操作。它从这开始-即使从X close选项关闭后,应用程序仍在后台运行(windows环境中的右上角)正如我所说的:它不应该-你要么展示sscce,要么自己一个人…水晶球是如此古老,它们在这里被禁止:-)嗨,这很管用。我的主窗口/视图/框架是
JFrame
的一个实例。因此,对于每次关闭的窗口,我都会在调用
Application.getInstance(MyApp.class).exit()之前检查它是否是
JFrame
的实例。那我为什么要用SAF呢?这个框架有它的生命周期,这是我感兴趣的+1技术上正确(+1),只是没有遵循appframework的风格:-)嗨,这很有效。我的主窗口/视图/框架是
JFrame
的一个实例。因此,对于每次关闭的窗口,我都会在调用
Application.getInstance(MyApp.class).exit()之前检查它是否是
JFrame
的实例。那我为什么要用SAF呢?这个框架有它的生命周期,这是我感兴趣的+1技术上正确(+1),只是没有遵循appframework的风格:-)