2012-09-22 13 views
10

WebEngineのロードが完了した後にタスクを自動的に実行できますか?ロードの進捗状況を示すためにWorkerWebEngineから取得できることはわかっていますが、Workerを繰り返しポーリングしているようです(つまり、ページが読み込まれるまでプログラムをロックする)。私はTaskでこれを行うことができることを知っています。何とかTaskWebEngineのために取得して、完全実行コマンドを追加できますか?WebViewが完全にロードされた後にタスクを実行します

WebView documentation

答えて

15

に基づいてサンプル:

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 
    }); 
:ラムダ式として

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