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

窗口关闭时的Java JNLP小程序不停止

吕修筠
2023-03-14

我已经将带有html小程序标记的小程序启动迁移到带有小程序描述符的jnlp部署

对于小程序解决方案,当浏览器窗口关闭时,java应用程序结束。

使用JNLP解决方案,当窗口关闭时,java应用程序不会停止。并引发异常:

Plugin2Manager calling stopFailed() because of exception during AppContext.dispose()
Plugin2Manager calling stopFailed() because of displayable window         javax.swing.JFrame[frame0,240,1,1018x647,invalid,hidden,layout=java.awt.BorderLayout,title=TimeCheck,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,3,32,1012x612,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
Exception in thread "Thread-19" java.lang.NullPointerException
    at sun.plugin2.applet.Plugin2Manager.destroyAppContext(Unknown Source)
    at sun.plugin2.applet.JNLP2Manager.destroyAppContext(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.cleanupAppContext(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.shutdownAppContext(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.stop(Unknown Source)
    at sun.plugin2.applet.viewer.JNLP2Viewer$2$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

非常感谢。

共有1个答案

尉迟禄
2023-03-14

解决方案是将WindowListener添加到顶级框架。一旦我们有了TopLevel Frame,也可以设置Resizable。

    ....
    while (parent.getParent() != null)
        parent = parent.getParent();
        if (parent instanceof Frame) {
            ((Frame) parent).setResizable(true);
            ((Frame) parent).addWindowListener(this);
    }
    ....

关闭事件的事件处理程序将执行一个系统。退出();

public void windowClosed(WindowEvent e) {
    // TODO Auto-generated method stub
    System.exit(0);
}
 类似资料:
  • 问题内容: 在Swing中,您可以简单地用于在关闭窗口时关闭整个应用程序。 但是,在JavaFX中找不到等效项。我有多个打开的窗口,如果一个窗口关闭,我想关闭整个应用程序。用JavaFX做到这一点的方法是什么? 编辑: 我了解可以覆盖以在窗口关闭时执行一些操作。问题是应该执行什么操作才能终止整个应用程序? 类中定义的方法不执行任何操作。 问题答案: 当最后一个关闭时,应用程序自动停止。目前,您的类

  • < b >想改进这个问题?通过编辑此帖子添加详细信息并澄清问题。 我用lwjgl框架做了一个游戏——它使用opengl窗口来渲染。我想每5秒钟渲染一次,而不停止游戏的更新。有什么方法可以做到这一点,直接用lwjgl还是用opengl?我猜这应该不是非常复杂,但我似乎找不到任何东西。

  • 对于JavaFX,通常是: 是否有方法检测TornadoFX视图关闭?

  • 我不想更改端口号,但收到异常“exception in thread”main“java.net.BindException:Address already in use:JVM_Bind” ServerSocket服务器=新服务器套接字(1234180);

  • 我试图重新创建Connect四,我成功了。但我想通过频繁地切换颜色,给玩家一个获胜的四张光盘在哪里的指示。我对线程和编程中的时间概念是新的。 我也成功地给了用户这个指示,但是在关闭应用程序之后,控制台仍然会给出输出,也是在使用SetonCloserEquest时。 代码如下:

  • 我使用Pygame和Pydub用Python编写了一个音乐播放器(我使用Pygame实际播放音乐,而Pydub可能与这个问题无关)。 除非我切换到另一个Pygame窗口,否则即使切换了窗口,音乐也能正常工作。我认为如果我编译它(cx_freeze),这种效果会消失,但那不起作用。 所以我想知道是否有什么方法可以让音乐在窗口切换到另一个Pyplay窗口时继续播放。 我使用而不是声音对象,如果可能有某