如何在JavaFX中将数据从WebView传递到控制器,反之亦然

时间:2012-06-06 16:13:20

标签: java javascript google-maps webview javafx

所以我在桌面JavaFX应用程序中找到了关于如何使用google maps API的tutorial

关键是我无法弄清楚如何将数据从WebView(javascripts变量,jsons ..)传递给控制器​​和反之亦然。

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

1 个答案:

答案 0 :(得分:8)

请参阅JavaFX WebView tutorial部分:

  • 处理JavaScript命令
  • 从JavaScript到JavaFX的Upcalls

确保在执行此操作时使用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>