JTree: проверьте уровень выбора

Я использую MouseAdapter для проверки двойных щелчков на узлах JTree. Я хочу иметь разные действия в зависимости от уровня выбранного узла. Как я могу проверить уровень узла? Вот код для слушателя:

private MouseAdapter getMouseAdapter(JTree jtree) {
        final JTree tree = jtree;
        return new MouseAdapter() {

            @Override
            public void mousePressed(MouseEvent e) {
                TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
                if (selPath != null) {
                    if (e.getClickCount() == 2) {
                        String selectedNode = selPath.getLastPathComponent().toString();

              // >>>>>  check on which level of the tree this node is        
                    }
                }
            }};
    }

person Giannis    schedule 28.12.2011    source источник


Ответы (2)


Вы можете проверить длину пути от selPath до корня дерева, сначала вызвав getPath() метода selPath и вычисление его длины.

Object[] array = selPath.getPath();
int depth = array.length;
person Kavka    schedule 28.12.2011
comment
Лучше всего давать ссылку на последнюю версию JavaDocs. Я отредактировал ваш ответ, указав на J2SE 7. Советы по получению ссылки на последние документы см. в разделе пункт 2 преимуществ. - person Andrew Thompson; 29.12.2011

TreePath path = tree.getSelectionPath();
int level = path.getPathCount();

См. страницу руководства по TreePath.

person Shahriar Husainy    schedule 27.04.2013
comment
Добро пожаловать в Stack Overflow, Шахриар. Прочтите FAQ, чтобы получить советы о том, как разметить блоки кода, чтобы они были правильно отформатированы, а также рассмотрите возможность добавления объяснения ваших решений, чтобы помочь людям понять, что вы сделали. - person Bobulous; 28.04.2013