0

我已经实现了https://blogs.oracle.com/geertjan/file-browser以仅显示文件夹(将 accept() 中的 == 更改为 !=)。但是,无论我做了什么,它只调用第一级的 FileFilterNodeChildren,即根节点的子节点。所以我得到的是根节点的文件夹(我想要的目录),但它显示了这个级别以下的所有文件和文件夹。我已经放入了验证过滤器函数仅在第一级调用的语句。

我需要做什么来过滤第一级及以下的孩子?

4

1 回答 1

0

在 createNodes() 内部,您需要使用 FileFilterNode 的实例包装子节点。这是 createNodes() 的修订版本:

@Override
protected Node[] createNodes(Node object) {
    List<Node> result = new ArrayList<Node>();
    for (Node node : super.createNodes(object)) {
        if (accept(node)) {
            // This is the only changed line
            result.add(new FileFilterNode(node));
        }
    }
    return result.toArray(new Node[0]);
}

这已在 Windows 上的 NetBeans 8.2 中进行了测试,并按预期工作。“文件浏览器”显示一个仅包含所有级别文件夹的树。

于 2018-10-23T16:44:36.893 回答