2011-10-12 130 views
1

我是使用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; 
} 

更準確地說,搜索輸出顯示兩次。我究竟做錯了什麼???

回答

0

所以我意識到我有點睡眠剝奪,並意識到該方法被樹的初始創建兩次調用。不知道爲什麼這個方法被調用了兩次。但我調整了一些代碼,事情恢復正常。