gpt4 book ai didi

java - Swing 应用程序框架中的窗口关闭

转载 作者:行者123 更新时间:2023-11-29 03:45:04 24 4
gpt4 key购买 nike

我正在为基于 Swing 的 Java 应用程序使用 Swing Application Framework 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 extends FrameView 这是我的主视图。

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

最佳答案

WindowEvent类有一个方法调用 getWindow() ,它返回正在关闭的窗口。

在您的 windowClosing 方法中,您可以检查:如果该窗口是主应用程序窗口,请使用您当前拥有的代码。如果不是,请调用 Window.dispose()

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

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

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

关于java - Swing 应用程序框架中的窗口关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11362750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com