2012-11-30 2 views
0

У меня есть дерево с несколькими узлами, а также создаю для него один приемник деревьев. Теперь мне нужно получить путь к конкретному узлу при его нажатии. Я пробовал этот код, но не получил точный результат. Кто-нибудь может мне помочь?Как получить путь узла от JTree при щелчке по дереву?

public class FTListener implements TreeSelectionListener { 


    @Override 
    public void valueChanged(TreeSelectionEvent e) { 
     TreePath[] tree=new TreePath[e.getNewLeadSelectionPath().getPathCount()]; 
     int i=0; 

     tree=e.getPaths(); 

     for(TreePath tr:tree){ 
      System.out.println(tree[i]); 
     i++;} 

     //getPath() returns the array elements so i'm here using 
    //for loop for printing each elements. 

это выход

[/Desktop, /home/user/Desktop, /home/user/Desktop/1302677132563_USER_MANUAL_SMS_BANKING.pdf] 
[/Desktop, /home/user/Desktop, /home/user/Desktop/Lab090C .java~] 
+2

В чем проблема? у вас есть два пути, и они оба напечатаны, поскольку вы его закодировали :-) – kleopatra

+0

@ kleopatra хорошая вещь, что ПК все еще делает именно то, что мы кодируем. Я бы начал беспокоиться иначе – Robin

ответ

1

ли это

public void valueChanged(TreeSelectionEvent e) { 

    DefaultMutableTreeNode node = (DefaultMutableTreeNode) 
         tree.getLastSelectedPathComponent(); 

    if (node == null) { 
    //since Nothing is selected.  
    return; 
    } 

    Object nodeObject = node.getUserObject(); 
    System.out.println("Selected node : " + nodeObject); 
} 

Добавить это, если вы хотите только одиночный выбор

tree.getSelectionModel().setSelectionMode 
     (TreeSelectionModel.SINGLE_TREE_SELECTION); 
+0

Почему приведение к 'DefaultMutableTreeNode'? Совершенно возможно создать 'JTree' с вашими собственными объектами. – Robin

+0

@Robin Я думаю, что 'DefaultMutableXxx' является преимуществом, но согласен с тем, чтобы« изобретать колесо » – mKorbel

+0

@mKorbel. Я согласен с тем, что существует много ситуаций, когда легко использовать« DefaultMutableTreeNode ». Но в случае этого вопроса нет ничего, чтобы предположить, что он/она использует экземпляры DefaultMutableTreeNode, что делает этот ответ слишком специфичным. – Robin

Смежные вопросы