2014-10-29 6 views
1

Я реализовал JTree, и мне нужно получить индекс выбранного узла.Получить выбранный индекс узла JTree в вставленном порядке

Im пытается получить индекс, используя этот код:

tree.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent e) { 

      // This code to get selected index of node 
      int[] selectionRows = tree.getSelectionRows(); 
     } 
    }); 

Но метод getSelectionRows возвращает Differents результаты в зависимости, если некоторые узлы были collpased или расширены. Например:

Это мое дерево:

enter image description here

Если я выбираю один узел, как изображение после этого, getSelectionRows вернуть номер 4.

enter image description here

Но если какой-то узел были свернуты, как картинка после, возврат getSelectionRows 3.

Мне нужно, что alwa ys return 4, thats - номер индекса в порядке узлов.

Спасибо.

enter image description here

ответ

2

Если вы пытаетесь отслеживать порядок вставки, как об этом?

public class MyTreeModel extends DefaultTreeModel { 
    int nodeNum = 0; 
    Map<MutableTreeNode,Integer> nodeOrder = ...; 

    public void insertNodeInto(MutableTreeNode newChild, MutableTreeNode parent, int index) { 
    nodeOrder.put(newChild, nodeNum++); 
    super.insertNodeInto(newChild, parent, index); 
    } 
} 
+0

Спасибо за помощь, Как я могу использовать эту карту для получения выбранного индекса узла? – computered

+0

, если у вас есть выбранный узел, вы можете сделать «int index = nodeOrder.get (selectedNode)»; – ControlAltDel

+0

И эта переменная selectedNode, Где мне получить значение? – computered

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