我在创建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相对照:
    私人TreeSelectionListener createSelectionListener(){
        返回(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);
        };
}


我要解决所有这些错误吗?还是我缺少明显的东西?

最佳答案

您不能在非功能性接口上使用lambda表达式。功能接口只有一种抽象方法。

TreeExpansionListener

TreeSelectionListener



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

09-27 22:51