2012-06-06 12 views
6

Quindi ho trovato questo tutorial su come utilizzare l'API di google maps in un'applicazione JavaFX desktop.Come passare i dati da WebView al controller e viceversa in JavaFX

Il punto è che non riesco a capire come posso passare i dati da WebView (javascripts variables, jsons ..) al controller e viceversa.

Mi piacerebbe creare un campo di testo su textinput per cercare automaticamente quell'indirizzo e aggiungere un marker lì (e viceversa quando sposto l'indicatore per popolare l'input). Lo standalone javascript non è un problema per me, ma non so come chiamare funzioni javascript dal controller di JavaFX o il modo di mandare indietro le variabili da JavaScript (longitudine, latitudine, ecc)

risposta

8

Vedi le JavaFX WebView tutorial sezioni:

  • lavorazione JavaScript Comandi
  • fare upcalls da JavaScript per JavaFX

assicurarsi di utilizzare JavaFX 2.1 + quando si fa questo, come JavaFX 2.0 non ha il supporto completo per upcalls da JavaScript a JavaFX.


Come chiamare funzioni javascript dal regolatore di JavaFX?

codice Java da eseguire dopo che il documento è stato caricato:

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

Come inviare indietro le variabili da JavaScript (longitudine, latitudine, ecc)?

Ecco un esempio di comunicazione generico, sostituirlo con l'effettiva logica Java e JavaScript che si desidera eseguire.

codice 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(); 
    } 
} 

codice JavaScript (in questo caso incorporato in un gestore onclick per un href html):

<a href="about:blank" onclick="app.exit()">Exit the Application</a> 
+1

Grazie. Bella risposta. –

Problemi correlati