2012-09-22 11 views
10

Czy jest możliwe automatyczne uruchomienie zadania po zakończeniu ładowania WebEngine? Wiem, że mogę uzyskać Worker z WebEngine, aby wskazać postęp ładowania, ale wygląda na to, że wielokrotne odpytywanie Worker nie jest eleganckim rozwiązaniem (tj. Zamykaniem programu do momentu załadowania strony). Wiem, że mogę to zrobić z Task, więc mogę dostać Task dla WebEngine jakoś i dodać execute na kompletne polecenie?Wykonaj zadanie po całkowitym załadowaniu WebView.

Odpowiedz

15

próbki na podstawie 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 
    } 
}); 

jako wyrażenie 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 
    }); 
Powiązane problemy