2010-07-09 34 views
0

我是java新手,有一個swing任務問題。java swing addTaskListener

我可以向當前運行的任務添加偵聽器嗎?例如,如果doInBackGround發生什麼事情,我想添加一個監聽器來完成並顯示一個對話框。我試過了,但編譯器不喜歡我。 :)

類似。

private class MyTask extends Task<Void, Void>{ 
    @Override 
    public void doInBackground(){ 
    if(foo == foo){ 
     this.addTaskListener(new TaskListener() { 
      public void taskFinsished(){}... 
     }); 
    } 
    } 
} 

由於

+0

爲什麼不將它添加到MyTask的構造函數? – Xorty 2010-07-10 11:41:50

回答

2

Task不是面向聽衆組分。您需要重寫一個或多個方法來獲取結果。所有這些方法都將在EDT上執行。

取消() - 調用cancel()方法來終止任務。

成功(T結果) - 的Task完成,result保持從doInBackground()的返回值。

中斷(InterruptedException的E) - interrupt被稱爲在Thread執行Task

失敗(可投訴的原因) - doInBackground拋出異常。

finished() - Task已完成(以某種方式)。把它看作Tasksfinally的功能等價物。