J'ai des difficultés à créer un TreeExpansionListener
. Je pensais que cela pourrait être aussi facile qu'un TreeSelectionListener
. Malheureusement, je ne peux pas trouver l'interface correcte.Comment créer un JTree ExpansionListener
Voici mon auditeur:
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);
};
}
L'erreur que je reçois est "types incompatibles: TreeExpansionListener n'est pas une interface fonctionnelle de multiples méthodes abstraites non prépondérants trouvées dans TreeExpansionListener."
compaired à mon TreeSelectionListener
: privé TreeSelectionListener createSelectionListener() { retour (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);
};
}
Est-ce que je vais tout à fait faux? Ou est-ce que je manque quelque chose d'évident?
Donc vous dites que je ne peux pas ajouter une autre expression lambda à une autre interface non-fonctionnelle? Donc je devrais l'étendre en tant que privateExpansionListener createExpansionListener() {DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); Chaîne de données = node.getUserObject(). ToString(); System.out.println ("Expanded:" + data);}; ' – Nina
@Nina voir mon édition –
K Cela fonctionne en effet. Je ne vois pas pourquoi une expression lambda ne fonctionnerait pas, à moins que l'interface fonctionnelle soit l'arbre et non l'auditeur comme je le pense. – Nina