2012-09-22 24 views
10

Có thể tự động chạy tác vụ sau khi tải xong tải WebEngine không? Tôi biết tôi có thể nhận được Worker từ WebEngine để cho biết tiến trình tải, nhưng có vẻ như nhiều lần bỏ phiếu Worker không phải là giải pháp thanh lịch (tức là khóa chương trình cho đến khi tải trang). Tôi biết tôi có thể làm điều này với một Task, vì vậy tôi có thể nhận được Task cho WebEngine bằng cách nào đó, và thêm một thực thi trên lệnh hoàn chỉnh?Thực thi tác vụ sau khi WebView được tải đầy đủ

Trả lời

15

mẫu dựa trên 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 
    } 
}); 

Là một biểu thức 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 
    }); 
Các vấn đề liên quan