MesWebView.java 1.6 KB

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