8

そこで、デスクトップJavaFXアプリケーションでGoogleMapsAPIを使用する方法に関するこのチュートリアルを見つけました。

重要なのは、WebView(javascripts変数、jsons ..)からコントローラーとその逆にデータを渡す方法がわからないということです。

textinputでそのアドレスを自動的に検索し、そこにマーカーを追加するテキストフィールドを作成したいと思います(その逆に、マーカーを移動して入力にデータを入力します)。javascriptスタンドアロンは私にとって問題ではありませんが、JavaFXコントローラーからjavascript関数を呼び出す方法や、javascriptから変数(経度、緯度など)を送り返す方法がわかりません。

4

1 に答える 1

9

JavaFXWebViewチュートリアルのセクションを参照してください。

  • JavaScriptコマンドの処理
  • JavaScriptからJavaFXへのアップコールの作成

JavaFX 2.0はjavaScriptからJavaFXへのアップコールを完全にはサポートしていないため、これを行うときは必ずJavaFX2.1以降を使用してください。


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 に答える