如何在网站浏览器中打开链接在Webviewer JavaFx中

时间:2016-06-11 21:58:23

标签: java javafx webview javafx-webengine

我有这个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);
}

1 个答案:

答案 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>