2012-04-10 64 views

Respuesta

8

Debería utilizar getLevel. getLevel devuelve el número de niveles por encima de este nodo: la distancia desde la raíz hasta este nodo. Si este nodo es la raíz, devuelve 0. Alternativamente, si por alguna razón ha obtenido la ruta Treenode[] (usando getPath()), entonces es suficiente tomar la longitud de esa matriz.

getDepth es diferente, ya que devuelve la profundidad del árbol enraizado en este nodo. Que no es lo que quieres

+0

Gracias Anon. –

3

básicamente, usted tiene que Iterate dentro JTree, pero TreeSelectionListener pueden los rendimientos de valor interesante, por ejemplo

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

Guau, funciones interesantes! Usaré getLevel() como Anonymous, pero gracias también puede ser útil :) –

2

Si usted tiene un TreeSelectionListener que se ocupa de la TreeSelectionEvent, se puede utilizar el método TreeSelectionEvent#getPaths para recuperar los seleccionados TreePath s . El método TreePath#getPathCount devuelve la profundidad de la ruta seleccionada.

También puede solicitarlo directamente al JTree (aunque necesitará que el oyente esté informado cuando la selección cambie) utilizando el método JTree#getSelectionPaths.

Cuestiones relacionadas