Получить выбранный индекс узла JTree в порядке вставки
Я реализовал JTree, и мне нужно получить индекс выбранного узла.
Я пытаюсь получить индекс, используя этот код:
tree.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// This code to get selected index of node
int[] selectionRows = tree.getSelectionRows();
}
});
Но метод getSelectionRows возвращает разные результаты в зависимости от того, были ли некоторые узлы объединены или расширены. Например:
Это моё дерево:
Если я выберу один узел, как на картинке после, getSelectionRows вернет номер 4.
Но если какой-то узел был свернут, как на картинке после, getSelectionRows вернет 3.
Мне нужно, чтобы всегда возвращалось 4, то есть номер индекса в порядке узлов были вставлены.
Благодарю.
1 ответ
Если вы пытаетесь отслеживать порядок ввода, как насчет этого?
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);
}
}