当前位置: 首页 > 知识库问答 >
问题:

将信息从JavaFX传递到Javascript

苏宏峻
2023-03-14

我正在尝试在html WebView中将信息(lattiude,longitority)传递到google map。问题是应用程序没有在NetBeans中启动。它返回说:

使用平台执行C:\Users\Carlos\Documents\NetBeansProjects\OpenPilot\Dist\Run1883323097\OpenPilot.jar\JK1.8.0_05\JRE/bin/Java应用程序中的异常启动方法java.lang.Reflect.InvocationTargetException在Sun.Reflect.NativeMethodAccessorInvoke0(本机方法)在Sun.Reflect.NativeMethodAccessorInvoke(nativeMethodAccessorInvoke(nativeMethodAccessorInvoke:62)在R.LauncherHelper$FXHelper.Main(LauncherHelper.java:767)原因:java.lang.RuntimeException:在com.sun.javafx.Application.LauncherImpl.LaunchApplication1(LauncherImpl.java:894)的应用程序启动方法中出现异常,在com.sun.javafx.Application.LauncherImpl.Access$000(LauncherImpl.java:56)的原因:com.sun.javafx.Application.LauncherImpl.Access$1。在java.lang.Thread.Run(

在javafx.fxml.fxmlloader.constructloadexception(fxmlloader.java:2617)在javafx.fxml.fxmlloader.loadimpl(fxmlloader.java:2595)在javafx.fxml.fxmlloader.load(fxmlloader.java:2425)在openpilot.openpilot.start(fxmlloader.java:29)在com.sun.javafx.application.launcherimpl$8。在com.sun.javafx.application.launcherimpl$7。在n:TypeError:“undefined”不是位于com.sun.webkit.dom.jsobject.fwkmakeException(jsobject.Java:128)位于com.sun.webkit.webpage.twkexecutescript(本机方法)位于com.sun.webkit.webpage.executescript(webpage.Java:1410)位于javafx.scene.web.webengine.executescript(webengine.Java:934)位于

代码如下:

public class FXMLDocumentController implements Initializable {

    @FXML public WebView Map;





    @Override
    public void initialize(URL url, ResourceBundle rb) {

        URL MapURL = getClass().getResource("map.html");
        WebEngine WebEngine = Map.getEngine();
        WebEngine.load(MapURL.toExternalForm());
        String test = "40.3130432088809";
       WebEngine.executeScript("getCoordinates('40.3130432088809')");

    }    

}

下面是带有映射的html:

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script>
        var latitude;
        var longitude;
        function getCoordinates(latitude){
  this.latitude = latitude;

}
        var map;
        function initialize() {
            var mapOptions = {
                zoom: 8,
                center: new google.maps.LatLng(latitude, -2.900390625)
            };
        map = new google.maps.Map(document.getElementById('map-canvas'),
        mapOptions);

        google.maps.event.addListener(map, 'click', function(event) {
   placeMarker(event.latLng);
});


}
function placeMarker(location) {
    var marker = new google.maps.Marker({
        position: location, 
        map: map
    });

    google.maps.event.addListener(marker, 'rightclick', function() {
                    deleteMarker(marker);
                });

}

function deleteMarker(marker) {
                marker.setMap(null); 
            }
google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>
</html>

共有1个答案

厍胤运
2023-03-14

您几乎可以肯定地尝试在页面加载之前执行javascript。您需要指定一个处理程序,以便在web引擎完成加载后执行脚本。

@Override
public void initialize(URL url, ResourceBundle rb) {

    URL MapURL = getClass().getResource("map.html");
    WebEngine WebEngine = Map.getEngine();
    WebEngine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {
        if (newState == State.SUCCEEDED) {
            WebEngine.executeScript("getCoordinates('40.3130432088809')");
        }
    });
    WebEngine.load(MapURL.toExternalForm());

} 
 类似资料:
  • 问题内容: 因此,我试图从根本上建立一个用户选择ID的网页,然后该网页将ID信息发送给python,在python中,python使用ID来查询数据库,然后将结果返回至该网页进行显示。 我不太确定该怎么做。我知道如何使用ajax调用来调用python生成的数据,但是我不确定如何将初始id信息传达给django应用。是否可以说,查询../app/id(IE / app / 8)之类的网址,然后使用该

  • 问题内容: 由于这是我的第一篇文章,请原谅任何不正确之处。我的问题,我想将JavaScript函数的值传递给initialize方法的Javafx } 和JavaScript部分是这样的 我要传递的值是方法调用JavaScript上的lengthInMeters有什么想法?提前thnx 问题答案: 我已经尝试过简化代码: 而且不起作用。 在您的情况下和在我的方法中,是 在* 网络加载 后 调用的,

  • 问题内容: 因此,我试图从根本上建立一个用户选择ID的网页,然后该网页将ID信息发送给python,在python中,python使用该ID来查询数据库,然后将结果返回给该网页进行显示。 我不太确定该怎么做。我知道如何使用ajax调用来调用python生成的数据,但是我不确定如何将初始id信息传达给django应用。是否可以说,查询../app/id(IE / app / 8)之类的网址,然后使用

  • 如何在Lambda函数中引用API网关GET查询字符串参数? 当我进行测试时,我可以使用 当我使用post进行测试时,我可以使用body参数作为带有 的事件,使用get请求,但我没有body。我如何使用查询字符串参数,然后在请求中引用它们。我使用什么事件或其他属性来获取查询参数,或者我需要进行什么设置或更改? 在测试时,我引用了event[“username”],对于作为查询字符串参数传递它的AP

  • 如果需要与特定的应用编程接口/硬件组件交互,您将如何将信息从Flutter传递回Android/Native代码? 是否有任何事件通道可以以其他方式或类似于回调的方式发送信息? platform_channel文档指出,“方法调用也可以反向发送,平台充当Dart中实现的方法的客户端。quick_actions插件就是一个具体的例子。”在这种情况下,我看不出本机是如何接收到来自Flatter的消息的