我可以在WebView中添加Node吗?



我猜这是不可能的,但是…有人知道是否有办法将javafx。scene。node添加到javafx。scene。web。webview中吗?

我主要关心的是Node在DOM中是可见的。理想情况下,它将在dom中被视为div,但这不是我主要关心的。

当你谈论dom和div时,它们是html组件和标签。Node是Java。它不能直接在html中显示或"按原样"处理。但是你可以桥接它:

@Override
public void start(Stage primaryStage) {
    WebView webView = new WebView();
    final WebEngine webEngine = webView.getEngine();
    webEngine.load(getClass().getResource("demo.html").toExternalForm());
    webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
        @Override
        public void changed(ObservableValue<? extends Worker.State> ov, Worker.State oldState, Worker.State newState) {
            if (newState == Worker.State.SUCCEEDED) {
                JSObject window = (JSObject) webEngine.executeScript("window");
                window.setMember("myJavaFXButton", new Button("My JavaFX Button"));
            }
        }
    });
    StackPane root = new StackPane();
    root.getChildren().addAll(webView);
    Scene scene = new Scene(root, 300, 250);
    primaryStage.setScene(scene);
    primaryStage.show();
}
demo.html所在的

<div id="content">content</div>
<button onclick="document.getElementById('content').innerHTML = myJavaFXButton.getText();">
     Get my lovely JavaFX button's text
</button>

最新更新