2011-12-28 3 views
1

Я использую MouseAdapter для проверки двойного щелчка на узлах JTree. Я хочу иметь несколько разных действий в зависимости от уровня выбранного узла. Как проверить уровень узла? Вот код для слушателя: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   
        } 
       } 
      }}; 
    } 

ответ

4

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

Object[] array = selPath.getPath(); 
int depth = array.length; 
+0

Лучше всего ссылку на последнюю версию JavaDocs. Я отредактировал ваш ответ, чтобы указать на J2SE 7. Советы по получению ссылки на последние документы см. В [пункте 2 преимуществ] (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7090875) , –

+0

Его работы. Благодаря ! – Giannis

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

См TreePath manual page.

+0

Добро пожаловать в Stack Overflow, Shahriar. Пожалуйста, прочитайте FAQ для получения советов о том, как разбить блоки кода, чтобы они были отформатированы правильно, а также подумайте над тем, чтобы добавить объяснение ваших решений, чтобы помочь людям понять, что вы сделали. – Bobulous

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