【问题标题】:Disposing javaFX webengine in JFrame在 JFrame 中处理 javaFX webengine
【发布时间】:2013-04-24 18:34:10
【问题描述】:

我的 JFrame 中有一个网络浏览器,我想我无法让它在退出应用程序时处理它。

这是我试图实现这一目标的代码:

Platform.runLater(new Runnable() {
    @Override
    public void run() {
        webBrowserEngine.getLoadWorker().cancel();
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                Platform.exit();
                SwingUtilities.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        getMainFrame().dispose(); // Is set to dispose on close
                        // SwingUtilities.invokeLater(new Runnable() {
                            // @Override
                            // public void run() {
                                // System.exit(0);
                            // }
                        // });
                    }
                });
            }
        });
    }
});

窗口关闭,但 java 进程保留,此行始终返回 false:

webBrowserEngine.getLoadWorker().cancel();

【问题讨论】:

标签: java swing javafx-2 javafx


【解决方案1】:
Platform.exit();

强制 FXApplicationThread 终止。与它相关的一切最终都会最终确定。您可以通过扩展和覆盖 WebEngine 类来测试这一点,以便在 finalize() 触发器上处理不同的事情。

此外,WebEngine 本身也存在与 url 处理例程相关的 self-disposers 的实现。

另外,WebEngine 处理一些 URLLoader 用于资源处理。擦除这些有点奇怪,因为它们在 DLL 中……如此原生。

解决这个问题会导致一堆 MemoryAccessViolation 异常,这些异常需要逻辑解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 2014-11-01
    • 2013-10-18
    • 1970-01-01
    相关资源
    最近更新 更多