2015-11-11 6 views
1

У меня возникли проблемы с созданием TreeExpansionListener. Я думал, что это может быть так просто, как TreeSelectionListener. К сожалению, я не могу найти правильный интерфейс.Как создать JTree ExpansionListener

Вот мой слушатель:

private TreeExpansionListener createExpansionListener() { 
    return (TreeExpansionEvent event) -> { 
     TreePath path = event.getPath(); 
     DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); 
     String data = node.getUserObject().toString(); 
     System.out.println("Expanded: " + data); 
    }; 
} 

Ошибка я получаю это «несовместимые типы: TreeExpansionListener не функциональный интерфейс несколько не-главенствующими абстрактные методы, найденные в TreeExpansionListener.»

compaired моему TreeSelectionListener : частный TreeSelectionListener createSelectionListener() { возвращение (TreeSelectionEvent е) -> {

 node = (DefaultMutableTreeNode) template_tree.getLastSelectedPathComponent(); 
     if ((node == null){ 
      return; 
     } else { 
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); 
     String data = node.getUserObject().toString(); 
     System.out.println("Expanded: " + data); 
     }; 
} 

Я все об этом не так? Или я пропущу что-то очевидное?

ответ

1

Вы не можете использовать выражение лямбда на нефункциональном интерфейсе. Функциональный интерфейс имеет только один абстрактный метод.

TreeExpansionListener

TreeSelectionListener


private TreeExpansionListener createExpansionListener() { 
    return new TreeExpansionListener(){ 
    // implement methods and do stuff... 
    } 
} 
+0

Так вы говорите, я не могу добавить еще один лямбда-выражения к другому, не функциональный интерфейс? Поэтому мне пришлось бы расширять его как 'private TreeExpansionListener createExpansionListener() {DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); Строковые данные = node.getUserObject(). ToString(); System.out.println ("Расширенные:" + данные);}; ' – Nina

+0

@Nina см. Мое редактирование –

+0

K Это действительно работает. Я не понимаю, почему выражение лямбда не работает, если функциональный интерфейс не является деревом, а не слушателем, как я думаю. – Nina

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

  • Нет связанных вопросов^_^