所以我找到了关于如何在桌面 JavaFX 应用程序中使用谷歌地图 API 的教程。
关键是我不知道如何将数据从 WebView(javascripts 变量、jsons ..)传递到控制器,反之亦然。
我想在 textinput 上创建一个文本字段,以自动搜索该地址并在那里添加一个标记(反之亦然,当我移动标记以填充输入时)。javascript 独立对我来说没问题,但我不知道如何从 JavaFX 控制器调用 javascript 函数或如何从 javascript 发回变量(经度、纬度等)
所以我找到了关于如何在桌面 JavaFX 应用程序中使用谷歌地图 API 的教程。
关键是我不知道如何将数据从 WebView(javascripts 变量、jsons ..)传递到控制器,反之亦然。
我想在 textinput 上创建一个文本字段,以自动搜索该地址并在那里添加一个标记(反之亦然,当我移动标记以填充输入时)。javascript 独立对我来说没问题,但我不知道如何从 JavaFX 控制器调用 javascript 函数或如何从 javascript 发回变量(经度、纬度等)
请参阅JavaFX WebView 教程部分:
确保在执行此操作时使用 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>