2013-06-06 5 views
0

이럴 수는 없겠지만. . . javafx.scene.web.WebView에 javafx.scene.Node를 추가 할 수있는 방법이 있는지 알고있는 사람이 있습니까?WebView에 노드를 추가 할 수 있습니까?

내 관심사는 노드가 DOM 내에서 볼 수 있다는 것입니다. 이상적으로 그것은 div에서 dom으로 취급 될 것이지만 그것은 나의 주요 관심 사항이 아닙니다.

답변

0

dom과 div에 관해 이야기 할 때, 이들은 HTML 구성 요소와 태그입니다. 노드는 Java입니다. html로 직접 "있는 그대로"표시되거나 처리 될 수 없습니다. 당신은 그것을 해소 할 수 그러나 :

demo.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(); 
} 

,

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