我有这个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);
}
答案 0 :(得分: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>