2012-09-22 6 views
10

È possibile eseguire automaticamente un'attività dopo il caricamento dello WebEngine? So che è possibile ottenere un WebEngine da WebEngine per indicare il progresso del caricamento, ma sembra che il polling ripetuto del Worker non sia una soluzione elegante (vale a dire il blocco del programma fino al caricamento della pagina). So che posso farlo con un Task, quindi posso ottenere il Task per WebEngine in qualche modo e aggiungere un comando di esecuzione sul comando completo?Eseguire un'attività dopo che WebView è stato caricato completamente

risposta

15

esempio sulla base delle WebView documentation:

webView.getEngine().getLoadWorker().stateProperty().addListener(
    new ChangeListener<Worker.State>() { 
    @Override 
    public void changed(
    ObservableValue<? extends Worker.State> observable, 
    Worker.State oldValue, Worker.State newValue) { 

    if(newValue != Worker.State.SUCCEEDED) { 
     return; 
    } 

    // Your logic here 
    } 
}); 

Come un'espressione lambda:

webView.getEngine().getLoadWorker().stateProperty().addListener(
    (ObservableValue<? extends Worker.State> observable, 
    Worker.State oldValue, 
    Worker.State newValue) -> { 
    if(newValue != Worker.State.SUCCEEDED) { 
     return; 
    } 

    // Your logic here 
    });