MesWebView.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package com.mes.component;
  2. import com.mes.netty.ProtocolParam;
  3. import javafx.application.Platform;
  4. import javafx.beans.value.ObservableValue;
  5. import javafx.concurrent.Worker;
  6. import javafx.embed.swing.JFXPanel;
  7. import javafx.scene.Scene;
  8. import javafx.scene.web.WebEngine;
  9. import javafx.scene.web.WebView;
  10. import netscape.javascript.JSObject;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import java.util.Date;
  14. public class MesWebView extends JFXPanel {
  15. public static final Logger log = LoggerFactory.getLogger(MesWebView.class);
  16. public static WebEngine engine = null;
  17. public MesWebView(String url){
  18. Platform.runLater(() -> {
  19. WebView webView = new WebView();
  20. setScene(new Scene(webView));
  21. Date date = new Date();
  22. engine = webView.getEngine();
  23. CallFromJs bridge = new CallFromJs();
  24. engine.getLoadWorker().stateProperty().addListener(
  25. (ObservableValue<? extends Worker.State> ov, Worker.State oldState, Worker.State newState) -> {
  26. if (newState == Worker.State.SUCCEEDED) {
  27. JSObject window = (JSObject) engine.executeScript("window");
  28. window.setMember("apps", bridge);
  29. window.setMember("sout", System.out);
  30. }
  31. }
  32. );
  33. engine.load(url);
  34. });
  35. }
  36. public void reloadWeb(){
  37. engine.reload();
  38. }
  39. }