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