У меня возникли проблемы с созданием 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);
};
}
Я все об этом не так? Или я пропущу что-то очевидное?
Так вы говорите, я не могу добавить еще один лямбда-выражения к другому, не функциональный интерфейс? Поэтому мне пришлось бы расширять его как 'private TreeExpansionListener createExpansionListener() {DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); Строковые данные = node.getUserObject(). ToString(); System.out.println ("Расширенные:" + данные);}; ' – Nina
@Nina см. Мое редактирование –
K Это действительно работает. Я не понимаю, почему выражение лямбда не работает, если функциональный интерфейс не является деревом, а не слушателем, как я думаю. – Nina