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

使用默认浏览器在JavaFX WebView中打开超链接,webview,javafx,Webview,Javafx,我正在编写一个使用基于Swing的用户界面的Java程序,但是我需要访问WebView,因此我实现了一个JFXPanel,来解决这个问题WebView应该将广告横幅加载到程序中,用户可以在需要时单击该横幅。当前,单击广告时,新页面将在WebView中加载。如果可能,我希望在用户的默认浏览器中打开该页面,并刷新包含广告的页面。如何实现这一点?engine.getLoadWorker().stateProperty().addListener(新的ChangeListener()版本) engine

我正在编写一个使用基于Swing的用户界面的Java程序,但是我需要访问
WebView
,因此我实现了一个
JFXPanel
,来解决这个问题
WebView
应该将广告横幅加载到程序中,用户可以在需要时单击该横幅。当前,单击广告时,新页面将在
WebView
中加载。如果可能,我希望在用户的默认浏览器中打开该页面,并刷新包含广告的页面。如何实现这一点?

engine.getLoadWorker().stateProperty().addListener(新的ChangeListener()版本)
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();
                            }
                   }
          }
});
{ @凌驾
public void changed(observevalue)可能重复通常最好解释一个解决方案,而不是仅仅发布几行匿名代码。你可以阅读,也可以@AnhPham True,但至少这是一个开始。感谢你第一个站出来回答这个问题!