2012-04-10 11 views

Antwort

8

Sie getLevel verwendet werden soll. getLevel gibt die Anzahl der Ebenen über diesem Knoten zurück - die Entfernung von der Wurzel zu diesem Knoten. Wenn dieser Knoten der Stamm ist, wird 0 zurückgegeben. Wenn Sie aus irgendeinem Grund den Pfad Treenode[] (mit getPath()) erhalten haben, ist es ausreichend, die Länge dieses Arrays zu verwenden.

getDepth ist anders, da es die Tiefe des Baums zurückgibt, der an diesem Knoten verwurzelt ist. Was ist nicht was du willst.

+0

Danke Anon. –

3

basicaly Sie Iterate innen JTree, aber TreeSelectionListener können Renditen interessant Wert, zum Beispiel

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

Wow, interessante Funktionen! Ich werde getLevel() verwenden, wie Anonymous vorgeschlagen hat, aber danke auch, es kann nützlich sein :) –

2

Wenn Sie eine TreeSelectionListener haben, die die TreeSelectionEvent Griffe, können Sie die TreeSelectionEvent#getPaths Methode verwenden, um die ausgewählten TreePath s abrufen . Die Methode TreePath#getPathCount gibt die Tiefe des ausgewählten Pfads zurück.

Sie können es auch direkt an die JTree (obwohl Sie den Hörer informiert werden müssen, wenn die Auswahl geändert wird) mit der JTree#getSelectionPaths Methode fragen.

Verwandte Themen