在JavaFX WebView中使用默认浏览器打开超链接

7
我正在编写一个使用Swing用户界面的Java程序,但是我需要访问WebView,因此我实现了一个JFXPanel来处理它。 WebView应该将广告横幅加载到程序中,用户可以点击它进行查看。当前情况下,当单击广告时,新页面会在WebView中加载。如有可能,我希望页面在用户的默认浏览器中打开,并且包含广告的页刷新。我该如何实现?

可能是JavaFX WebEngine中的HyperlinkListener的重复问题。 - Goombert
1个回答

3
engine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>()
        {
            @Override
            public void changed(ObservableValue<? extends Worker.State> observable, Worker.State oldValue,
                    Worker.State newValue)
            {
            String toBeopen =
                            engine.getLoadWorker().getMessage().trim();
                    System.out.println("tobeopen: " + toBeopen);
                    if (toBeopen.contains("http://") || toBeopen.contains("https://")) {
                        engine.getLoadWorker().cancel();
                        try {
                                Desktop.getDesktop().browse(new URL(toBeopen).toURI());
                            }
                            catch (MalformedURLException e) {
                                e.printStackTrace();
                            }
                            catch (URISyntaxException e) {
                                e.printStackTrace();
                            }
                            catch (IOException e) {
                                e.printStackTrace();
                            }
                   }
          }
});

1
通常最好解释一下解决方案,而不仅仅是发布一些匿名代码行。您可以阅读《如何撰写良好的答案》和《解释完全基于代码的答案》。 - Anh Pham
@AnhPham 是的,但至少这是一个开始。感谢你成为第一个站出来回答这个问题的人,Sanjay! - DaveTheMinion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接