我猜这是不可能的,但是。. . 有人知道是否有办法将 javafx.scene.Node 添加到 javafx.scene.web.WebView?
我主要关心的是节点在 DOM 中是可见的。理想情况下,它会在 dom 中被视为 div,但这不是我最关心的问题。
我猜这是不可能的,但是。. . 有人知道是否有办法将 javafx.scene.Node 添加到 javafx.scene.web.WebView?
我主要关心的是节点在 DOM 中是可见的。理想情况下,它会在 dom 中被视为 div,但这不是我最关心的问题。
当您谈论 dom 和 div 时,这些是 html 组件和标签。节点是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>