【问题标题】: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>
    

    【讨论】:

      猜你喜欢
      • 2016-06-06
      • 2012-05-27
      • 2023-02-26
      • 2016-07-23
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 2015-11-01
      相关资源
      最近更新 更多