Как создать JTree ExpansionListener
У меня проблемы с созданием TreeExpansionListener
, Я думал, что это может быть так же легко, как TreeSelectionListener
, К сожалению, я не могу найти правильный интерфейс.
Вот мой слушатель:
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 найдено несколько неопределяемых абстрактных методов"
по сравнению с моим TreeSelectionListener
:
private TreeSelectionListener createSelectionListener() {
return (TreeSelectionEvent e) -> {
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 ответ
Решение
Вы не можете использовать лямбда-выражение на нефункциональном интерфейсе. Функциональный интерфейс имеет только один абстрактный метод.
private TreeExpansionListener createExpansionListener() {
return new TreeExpansionListener(){
// implement methods and do stuff...
}
}