1
スイングバックグラウンドタスクの実行について学習しましたが、これを試し始めましたが、実装に少し問題があります。私のコードはイメージを取得し、イメージ検索が成功したかどうかを示す結果(整数)を返します。結果は0または失敗した結果= -1です。ここに私の問題は、私はすぐに結果を取得しています。私は、結果がdone()メソッドで読み取られた後、以下のコードでcreateImageメソッド内のステートメントを実行することができます。私は、完了したメソッドは、createImageが完了するまで実行されないと思ったと思います。ここでは以下の私のコードは次のとおりです。Javaスイングワーカーを実装する際の問題
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();
はい。愚かなプログラミングエラー。私はそれを固定したときすべてが働いた。 – Elliott