当前位置: 首页 > 知识库问答 >
问题:

为什么我的Java应用程序没有正确关闭?

祝花蜂
2023-03-14

我有一个java应用程序,它在JTabbedPane上加载并显示一个applet。所以基本上GUI是:

程序--

我已经在JFrame类中放入了这一标准行:

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

下面是我在 JFrame 类中的方法,它应该在窗口关闭时调用:

    addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            setVisible(false);
            tabbedPane.stopAllApplets();
            dispose();
            super.windowClosed(e);
        }
    });

然后,在我的Tabbed Pane类中,我有一个管理Applets的arrayList:

ArrayList<PanelHolder> games = new ArrayList<>();

我循环遍历JPanels的ArrayList,如下所示:

public void stopAllApplets(){
    for (int i = 0; i < games.size(); i++) {
        games.get(i).stopGame();
    }
}

JPanel类中的stopGame()方法非常简单:

public void stopGame(){
    game.stop();
}

然后在实现AppletStub的JPanel类中,这里是stop()方法:

public void stop() {
    if (applet != null) {
        applet.stop();
        applet.destroy();
        applet = null;
    }
}

但是,每当我关闭小程序时,JVM 都会继续运行并占用系统资源。我正在使用引导加载程序,它使用参数启动JVM:

javaw -Xbootclasspath/p:"/C:/Users/Username/Documents/NetBeansProjects/Game/build/classes/" -cp "." main.Main

下面是我的任务管理器在运行几次后的最终外观:

我显然没有正确关闭我的应用程序,有什么建议吗?

共有1个答案

左康安
2023-03-14

将此添加到您的框架代码中:

setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

默认情况下是WindowConstants。关闭时什么都不做

 类似资料:
  • 主要活动 公共类MainActivity扩展AppCompatActivity{String response; 公共类GetExample{OkHttpClient客户端; Xml文件

  • 我正在使用JBoss开发我的第一个Web应用程序,并以Eclipse Luna和Windfly作为服务器。在WEB-INF中,我找不到web.xml文件。一切正常,应用程序正常工作,但是web.xml设置在哪里?如何更改,例如,类URL关联?请注意,我在编码的类中看不到任何注释。

  • 应用程序崩溃,我会得到以下错误: 致命异常:主进程:com.example.ayyan.JellyBeanEstimator,pid:2960 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.ayyan.JellyBeanEstimator/com.example.ayyan.JellyBeanEstimator.MainAc

  • 问题内容: 我正在学习Java和OOPS,并在日食中编写基本的Hello World时,我看到一个黄色三角形,告诉我 “实用程序类不应具有公共或默认构造函数” 。我不明白为什么会这样,这是什么意思?我在做什么不对? EDIT1:编辑代码以包括建议的更改。 仍然在类HelloWorld上收到警报。 编辑2: 创建了一个新类,现在可以使用了。谢谢乔恩,为什么旧​​班级还会发出警告?波希米亚语我仍然不知

  • 问题内容: 由于某种原因,当我添加到优先级队列时,它不能完全按字母顺序对字符串进行排序,也无法理解原因。 这是添加到PriorityBlockingQueue的代码: 但是我没有得到完全排序的输出(只有前几行,但是您可以看到它没有排序): 这是预期输出文件中排序输出的实数(第一部分): 问题答案: 我怀疑您正在尝试迭代并打印元素。 请注意,优先级队列数据结构(AKA heap)不能保证排序- 它保