8

所以我找到了关于如何在桌面 JavaFX 应用程序中使用谷歌地图 API 的教程。

关键是我不知道如何将数据从 WebView(javascripts 变量、jsons ..)传递到控制器,反之亦然。

我想在 textinput 上创建一个文本字段,以自动搜索该地址并在那里添加一个标记(反之亦然,当我移动标记以填充输入时)。javascript 独立对我来说没问题,但我不知道如何从 JavaFX 控制器调用 javascript 函数或如何从 javascript 发回变量(经度、纬度等)

4

1 回答 1

9

请参阅JavaFX WebView 教程部分:

  • 处理 JavaScript 命令
  • 从 JavaScript 向上调用 JavaFX

确保在执行此操作时使用 JavaFX 2.1+,因为 JavaFX 2.0 不完全支持从 javaScript 到 JavaFX 的调用。


如何从 JavaFX 控制器调用 javascript 函数?

加载文档后要执行的 Java 代码:

webView.getEngine().executeScript("<write your javascript here>");

如何从javascript(经度,纬度等)发回变量?

这是一个通用通信示例,将其替换为您要执行的实际 Java 和 JavaScript 逻辑。

Java代码:

// Add a Java callback object to a WebEngine document once it has loaded.
webEngine.getLoadWorker().stateProperty().addListener(
  new ChangeListener<State>() {  
    @Override public void changed(ObservableValue<? extends State> ov, State oldState, State newState) {
      if (newState == State.SUCCEEDED) {
        JSObject win = (JSObject) webEngine.executeScript("window");
        win.setMember("app", new JavaApp());
      }
    }
  });
}
...
// JavaScript interface object
private class JavaApp {
  public void exit() {
    Platform.exit();
  }
}

JavaScript 代码(在这种情况下嵌入在 html href 的 onclick 处理程序中):

<a href="about:blank" onclick="app.exit()">Exit the Application</a>
于 2012-06-06T23:58:11.100 回答