2012-04-10 5 views

답변

8

현재 노드의 깊이를 반환하지 않습니다

selected_node.getDepth(); 

.... getLevel은이 노드 위의 레벨 수를 반환합니다. 루트에서이 노드까지의 거리입니다. 이 노드가 루트이면 0을 반환합니다. Treenode[] 경로를 얻은 이유가 무엇이든 (getPath() 사용) 그 배열의 길이를 사용하는 것으로 충분합니다.

getDepth은이 노드에 뿌리를 둔 트리의 깊이를 반환하기 때문에 다릅니다. 네가 원하는게 아니야. 당신이 TreeSelectionEvent 처리하는 TreeSelectionListener이있는 경우 JTree 내부 Iterate에있는

+0

감사합니다. –

3

basicaly하지만 TreeSelectionListener 수 반환 흥미 값은, 예를

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTree; 
import javax.swing.SwingUtilities; 
import javax.swing.event.TreeSelectionEvent; 
import javax.swing.event.TreeSelectionListener; 

public class TreeSelectionRow { 

    public TreeSelectionRow() { 
     JTree tree = new JTree(); 
     TreeSelectionListener treeSelectionListener = new TreeSelectionListener() { 

      @Override 
      public void valueChanged(TreeSelectionEvent treeSelectionEvent) { 
       JTree treeSource = (JTree) treeSelectionEvent.getSource(); 
       System.out.println("Min: " + treeSource.getMinSelectionRow()); 
       System.out.println("Max: " + treeSource.getMaxSelectionRow()); 
       System.out.println("Lead: " + treeSource.getLeadSelectionRow()); 
       System.out.println("Row: " + treeSource.getSelectionRows()[0]); 
      } 
     }; 
     tree.addTreeSelectionListener(treeSelectionListener); 
     String title = "JTree Sample"; 
     JFrame frame = new JFrame(title); 
     frame.add(new JScrollPane(tree)); 
     frame.setSize(300, 150); 
     frame.setVisible(true); 
    } 

    public static void main(String args[]) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       TreeSelectionRow treeSelectionRow = new TreeSelectionRow(); 
      } 
     }); 
    } 
} 
+0

와우, 흥미로운 기능! 익명으로 제안 된 getLevel()을 사용 하겠지만 너무 감사합니다. –

관련 문제