所以我在桌面JavaFX应用程序中找到了关于如何使用google maps API的tutorial。
关键是我无法弄清楚如何将数据从WebView(javascripts变量,jsons ..)传递给控制器和反之亦然。
我想创建一个文本字段,在textinput上自动搜索该地址并在那里添加一个标记(反之,当我移动标记以填充输入时)。 javascript独立对我来说没有问题,但我不知道如何从JavaFX控制器调用javascript函数或如何从javascript(经度,纬度等)发回变量
答案 0 :(得分:8)
请参阅JavaFX WebView tutorial部分:
确保在执行此操作时使用JavaFX 2.1+,因为JavaFX 2.0不完全支持从javaScript到JavaFX的upcall。
如何从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>