JxBrowser重量级处理WINDOW\u CLOSE\u请求

 2023-02-15    274  

问题描述

我目前正在使用JXBrowser 6.2的评估许可证.

我正在创建browserview如下:

JxBrowser重量级处理WINDOW\u CLOSE\u请求

Browser browser = new Browser(BrowserType.HEAVYWEIGHT);
BrowserView browser_view = new BrowserView(browser);

我正在附加浏览组件,如下所示:

stage.setScene(new Scene(browser_view));

如果将浏览器配置为以轻质模式运行,我可以执行:

browser_view.getBrowser().dispose();Platform.exit();

但是,如果将浏览器配置为重量级模式下操作,则执行时该应用程序悬挂:

browser_view.getBrowser().dispose();

我可以在日志中看到distose消息的写入,但似乎JXBrowser Chromium过程永远不会接收/处理消息.

有什么想法?

推荐答案

正如我面前回答的解决方案是隐藏舞台后处理浏览器(关闭).
一种好方法是将这些命令放在Javafx应用程序的stop()方法上.
因此,无论哪种方式,您都可以关闭窗口(通过调用Platform.exit()单击关闭按钮或编程),浏览器将处置(整个应用程序都将完成并退出).

类似的东西:

@Override
public void stop() throws Exception {
    stage.hide();
    browser.dispose();
}

其他推荐答案

作为参考,我使用了此处描述的配置链接(部分:9.弹出窗口).

Platform.runLater(() -> {
    browser.dispose();
});

Platform.runLater(() -> {
    stage.close();
});

其他推荐答案

看来您需要确保舞台在呼叫处置之前已关闭.

stage.close();
browser_view.getBrowser().dispose();Platform.exit();

以上所述是小编给大家介绍的JxBrowser重量级处理WINDOW\u CLOSE\u请求,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33722.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。