2011-02-09 71 views
1

我剛剛瞭解執行swing後臺任務,我開始嘗試使用它,但我在實現時遇到了一些麻煩。我的代碼檢索圖像並返回一個結果(一個整數),指示圖像檢索是成功結果= 0還是不成功結果= -1。這是我的問題,我正在儘快檢索結果。在done()方法中讀取結果之後,我可以在下面的代碼中看到createImage方法中的語句。我想我認爲完成的方法不會執行,直到createImage完成。這裏是我的代碼如下:實現Java Swing工作的問題

new SwingWorker<int[], Void>() { 
int result = -1; 
@Override 
protected int[] doInBackground() throws Exception { 
// TODO Auto-generated method stub 
return createImage(); //returns an integer array of size one indicating the result 
        } 

protected void done() { 
try { 
result = get()[0]; //this result is being read before createImage is done 
         //executing. Why? 
thisApplet.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); 
tree.setEnabled(true); 
if (result == -1){ 
    tree.setSelectionPath(null); 
    return; 
} 
    } catch (InterruptedException e) {         
     e.printStackTrace(); 
    } catch (ExecutionException e) {       
      e.printStackTrace(); 
    } 
     } 
}.execute(); 

回答

2

done方法將不會執行,直到doInBackground方法完成。所以這裏一定有其他的事情發生。我猜你可能會調用done和doInBackground而不是run()?如果不是,請嘗試通過創建SSCCE來查找問題。

+0

是的。一個愚蠢的編程錯誤。當我修好它的一切工作。 – Elliott 2011-02-09 13:54:27