これは、2015 年 8 月 16 日のこのスレッドの続きです
Search
を使用するようにプログラムを変更していますSwingWorker
。元のコード (main
以下に示す) にThread
は、呼び出されmain
、特定のノードから「ファイル ツリーをたどる」コードがあります。
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
gui = new GUI();
Utilities.disable(GUI.btnStop);
}});
t = new Thread(new TASK());
taskStarted = false;
}
}
の元のクラス ヘッダーは次のTASK
とおりです。
public class TASK extends SimpleFileVisitor<Path> implements Runnable{
しかし、を使用するにはSwingWorker
、(私は推測します)TASK extends SwingWorker
元のrun
コマンドを違法にする必要があります (エラー: run
is final
in SwingWorker
)。
これがオリジナルrun
です:
public void run()
{
SearchyGUI.disposition = FileVisitResult.CONTINUE;
Files.walkFileTree(path , this);
}
を使用できないためrun
、クラスの初期化の上のコードを次のように作成しましたTASK
。
public class TASK implements SwingWorker implements FileVisitor<Path> {
public void TASK()
{
System.out.println("Here we are starting TASK...");
SearchyGUI.disposition = FileVisitResult.CONTINUE;
Files.walkFileTree(path , this);
}
しかし、現在、main
以下の行でエラーが発生しています (現在、TASK は runnable を実装していないため、適切なコンストラクターはありません....):
t = new Thread(new TASK());
そして、GUI が表示されたと言ってもnew TASK();
、[検索] ボタンをクリックしても何も起こりません。ファイル ウォークはありません。エラーなし。からの出力TASK
も表示されません。したがって、呼び出す機会はありませんSwingWorker
。(実際、何が起こるかを確認するために [何も] TASK
:のクラス ヘッダーから削除しましたpublic class TASK /*extends SwingWorker*/ implements FileVisitor<Path>
。)
明らかな間違いがある場合は、それを確認したいと思います。そうでない場合は、長い時間をかけてSSCCE
.