JTree搜索递归问题

时间:2011-10-12 10:15:54

标签: swing search recursion jtree

我是使用JTree的新手,所以如果我忽略了一些非常基本的东西,请耐心等待。我正在研究一个Jtree文件资源管理器。它需要一个目录,添加节点,选择节点和所有好东西。基础知识已经完成。额外的实现包括给出所选节点的文件/文件夹大小,这非常简单。但问题在于试图搜索树。它识别该文件存在。但由于某种原因,递归正在重演?并且价值没有正确返回。我已经将这两种方法包括在内以供参考。如果有与此相关的阅读,也将非常感激。

public void searchTree(String find)
{
    TreePath root = tree.getPathForRow(0);

    System.out.println(search (root, find));
}


public String search (TreePath path, String find)
{
    TreeNode currentNode = (TreeNode)path.getLastPathComponent();

    String findPath = null;

    if (currentNode.isLeaf() && currentNode.toString().startsWith(find))
    {
            findPath = path.getPath()[path.getPath().length-2].toString() + File.separator + path.getPath()[path.getPath().length-1].toString();
            return findPath;  
    }

    if (!currentNode.isLeaf() && currentNode.getChildCount()> 0)
        for (int i = 0; i < currentNode.getChildCount(); i++)
                search(path.pathByAddingChild(currentNode.getChildAt(i)), find);

    return findPath;
}

更确切地说,搜索输出出现两次。我做错了什么???

1 个答案:

答案 0 :(得分:0)

所以我意识到我有点睡眠被剥夺,并意识到该方法是由树的初始创建调用两次。不知道为什么这个方法被调用了两次。但我稍微调整了一下代码,事情又恢复了正常。