2012-09-22 25 views
10

¿Es posible ejecutar una tarea automáticamente después de que termine la carga del WebEngine? Sé que puedo obtener un Worker de WebEngine para indicar el progreso de la carga, pero parece que sondear repetidamente la Worker no es una solución elegante (es decir, bloquear el programa hasta que la página se cargue). Sé que puedo hacer esto con un Task, entonces ¿puedo obtener el Task para WebEngine de alguna manera, y agregar un comando ejecutar al completar?Ejecutar una tarea después de que WebView esté completamente cargado

Respuesta

15

muestra basada en el 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 
    } 
}); 

como una expresión 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 
    }); 
Cuestiones relacionadas