2016-08-24 3 views
0

私は、Dropboxアカウント(Dropbox API v2)内のファイルのリストを表示するJListを持っています。DropboxリストファイルがJListに表示されたら、SwingWorkerを停止するには?

ファイルのリストはswingworkerを使用して動作しますが、タスクが完了すると自動的にスイングワーカーを停止またはキャンセルできます。

私は試しました - >task.cancel(true);しかし、リストがJListに完全にロードされる前にタスクをキャンセルします。以下は私のコーディングですが、私は非常に近いと知っていますが、ファイル名がJListに正常に読み込まれたらタスクを取り消す方法を理解できません。

完了したらタスクをキャンセルするという面で助けてもらえますか?

どのようにこの問題を解決しますか。私はStackOverFlowに投稿されたswingworkerと質問に基づいて複数の異なるWebページを読みましたが、これを解決することはできません。たぶん、私はそれを停止することができないコーディングを実装する方法に問題があります。

は多くのあなたの助け

答えて

1

ための高度であなたはそれが完了したときに、それをキャンセルする必要はありません感謝しています。 これをdoInBackgroundから戻します。

は何あなたが今やっていることは

while(!cancelled){ // while #1 
    while(true){  // while #2 
     break; // out of while #2 if done 
    } 
} 

はそれがより多くの

while(!cancelled && !done) // added a "done" flag 
{ 
    doYourStuff(); 
    done = isComplete(); 
} 

免責ようにする必要があります:スニペットはない有効なJavaは、上 - 簡潔にするためだけの擬似コード。

ところで、 "mayInterruptIf Running"フラグ(JavaDoc参照)を使用すると、ワーカーは(文字通り)中断されます。したがって、それをfalseに設定すると、ループはisCancelledの次のチェックに実行されます。

+0

本当にありがとうございます。私が持っていた問題と実行中の問題を明確にしてくれてありがとう。あなたの提案されたソリューションは問題を解決しました。再度ありがとう:) :) – John

+0

あなたの以前の助けてくれてありがとう。しかし、私はリストの読み込みに問題が発生しています。時にはクラウドからのファイル名リストがすぐに読み込まれ、他の時には3〜4回ボタンをクリックしてリストが表示されます。なぜこれが起こっているのかという点で私を助けてください。さらに、ボタンを3回または4回クリックする必要がある場合、「java.lang.ArrayIndexOutOfBoundsException:8」という例外がスローされます。どうしたらいいですか?あなたの助けに感謝しています。 – John

+1

問題は何かを説明し、スタックトレースと現在のコードを追加する別の質問を開くことです(参照用にリンクすることができます)。だから、他の人も助けてくれるかもしれない。 – Fildor

関連する問題