Получить выбранный индекс узла 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);
  } 
}
Другие вопросы по тегам