我正在尝试为文件夹同步应用中的算法实现“取消”按钮。该算法以递归方式遍历用户指定的目录结构,将其文件和目录放入TreeView,并根据它们相对于其他文件夹中的等效文件是新的,删除的,更改的还是不变的进行标记。简化代码供参考:
fillInTreeView(File x, TreeItem root) {
if (x.isFile()) {
newBranch = makeBranch(x.getName(x.getNameCount() - 1).toString(), root);
assignMark(newBranch);
} else {
newBranch = makeBranch(x.getName(x.getNameCount() - 1).toString(), root);
assignMark(newBranch);
fillInTreeView(x, newBranch);
}
}
我不满意的是该“取消”的含义。如果我从顶部删除树中的所有内容,该函数是否仍将继续添加新内容,从还没有到达取消算法的文件中调用自身,从而使整个按钮变得毫无意义?我以为我宁愿先问一问,然后花几天的时间来尝试实施它,而只需要稍后再问及重新发现美国。
最佳答案
像这样尝试:
private static boolean cancelled = false;
fillInTreeView(File x, TreeItem root) {
if(cancelled) return;
if (x.isFile()) {
newBranch = makeBranch(x.getName(x.getNameCount() - 1).toString(), root);
assignMark(newBranch);
} else {
newBranch = makeBranch(x.getName(x.getNameCount() - 1).toString(), root);
assignMark(newBranch);
fillInTreeView(x, newBranch);
}
}
/*Your CLick-Listener*/
public void onClick(){
cancelled = true;
}