2012-04-10 18 views

Trả lời

8

Bạn nên sử dụng getLevel. getLevel trả về số lượng các cấp trên nút này - khoảng cách từ gốc đến nút này. Nếu nút này là gốc, trả về 0. Hoặc, nếu vì lý do nào đó bạn đã thu được đường dẫn Treenode[] (sử dụng getPath()) thì đủ để lấy độ dài của mảng đó.

getDepth là khác nhau, vì nó trả về độ sâu của cây bắt nguồn từ nút này. Mà không phải là những gì bạn muốn.

+0

Cảm ơn bạn Anon. –

3

về cơ bản bạn phải Iterate bên JTree, nhưng TreeSelectionListener lợi nhuận có thể có giá trị hấp dẫn, ví dụ

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

Các chức năng thú vị! Tôi sẽ sử dụng getLevel() như Anonymous gợi ý, nhưng cảm ơn bạn quá nó có thể có ích :) –

2

Nếu bạn có một TreeSelectionListener mà xử lý việc TreeSelectionEvent, bạn có thể sử dụng phương pháp TreeSelectionEvent#getPaths để lấy chọn TreePath s . Phương thức TreePath#getPathCount trả về độ sâu của đường dẫn đã chọn.

Bạn cũng có thể yêu cầu trực tiếp đến JTree (mặc dù bạn sẽ cần người nghe được thông báo khi lựa chọn thay đổi) bằng cách sử dụng phương thức JTree#getSelectionPaths.