我可以将节点添加到WebView

时间:2013-06-06 17:36:56

标签: javafx-2

我猜这不可能,但是。 。 。有人知道是否有办法将javafx.scene.Node添加到javafx.scene.web.WebView?

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

1 个答案:

答案 0 :(得分:1)

当你谈论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>