【问题标题】:How to Open Links in a browser of a website Inside a Webviewer JavaFx如何在 Webviewer JavaFx 内的网站浏览器中打开链接
【发布时间】:2016-06-11 21:58:22
【问题描述】:
我有这个 VBox 持有一个 WebView 容器。我想不通的是如何让 WebViewer 在任何浏览器的新选项卡或窗口中打开链接,而不是在程序上查看它。
@FXML private VBox WebViewer;
public void initialize(URL location, ResourceBundle resources) {
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
webEngine.load("http://google.com/");
WebViewer.getChildren().addAll(browser);
}
【问题讨论】:
标签:
java
javafx
webview
javafx-webengine
【解决方案1】:
我假设你现在已经想通了,但我这样做的方法是使用 WebEngine 中的特殊 JavaScript API 来调用 java 方法并以这种方式打开它。
创建一个类,像这样:
public class eagler {
public void open(String url) {
java.awt.Desktop.getDesktop().browse(url);
}
}
然后,在您的 webengine.load 方法之前添加:
webEngine.getLoadWorker().stateProperty().addListener(
new ChangeListener<State>() {
@Override
public void changed(ObservableValue<? extends State> ov,
State oldState, State newState) {
if (newState == State.SUCCEEDED) {
JSObject win = (JSObject) webEngine.executeScript("window");
win.setMember("eagler", new eagler());
}
}
}
);
现在,只要您想打开外部页面...
<button onclick="eagler.open('http://bitly.com/98K8eH')">Click Me</button>