2014-10-06 88 views
0

在REST API上調用方法會產生一個javafx.concurrent.Worker對象。Worker完成後處理

final Worker<ObservableList<ProductBrand>> retrieve = listDataProvider.retrieve(); 

我想在Worker完成其工作後發生一些操作。我怎樣才能做到這一點?

回答

2

註冊與Workerstate屬性監聽器,並處理狀態轉換:

retrieve.stateProperty().addListener((obs, oldState, newState) -> { 
    if (newState == Worker.State.SUCCEEDED) { 
     ObservableList<ProductBrand> result = retrieve.getValue(); 
     // etc... 
    } else if (newState == Worker.State.FAILED) { 
     Throwable exception = retrieve.getException(); 
     /// etc... 
    } 
    // handle other states (READY, SCHEDULED, RUNNING, CANCELLED) if needed 
}); 

注意這個回調將在FX應用程序線程來執行,這樣你就可以安全地修改的元素的狀態這裏的場景圖。

+0

它的工作原理。謝謝。 – 2014-10-06 16:39:43