我正在修改我的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在final)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 没有实现可运行的......):
t = new Thread(new TASK());
如果我只是说new TASK();GUI 显示,但是当我单击“搜索”按钮时,什么也没有发生。没有文件步行。没有错误。的输出TASK甚至没有显示。所以没有机会调用SwingWorker. (事实上,只是为了看看会发生什么[什么],我把它从类头中删除了TASK: public class TASK /*extends SwingWorker*/ implements FileVisitor<Path>。)
如果有什么明显的错误,我很乐意看到。如果没有,我会花很长时间制作一个SSCCE.