【发布时间】:2019-01-31 03:19:24
【问题描述】:
我已实现 https://blogs.oracle.com/geertjan/file-browser 以仅显示文件夹(将 accept() 中的 == 更改为 !=)。但是,无论我做了什么,它只调用第一级的 FileFilterNodeChildren,即根节点的子节点。所以我得到的是根节点的文件夹(我想要的目录),但它显示了这个级别以下的所有文件和文件夹。我已经放入了验证过滤器函数仅在第一级调用的语句。
过滤第一级及以下的孩子需要做什么?
【问题讨论】:
-
我不太确定我是否了解您的需求。您只想查看第一级的文件夹吗?您只想查看任何级别的文件夹吗?你有没有用调试器单步调试你的代码,看看哪里出错了?这通常是了解您复制的代码的最佳方式。
-
我只想查看文件夹,无论级别如何。我不想在此资源管理器中看到任何文件。
-
请注意,正在使用的类(例如
DataFolder)是不是基本的 JDK 类,因此我无法帮助您了解该库的细节。但是,如果您检查 `node.getLookup().lookup(DataFolder.class) != null`,这似乎与“它是一个文件夹”不同。您需要阅读lookup正在做什么,以更好地了解正在发生的事情。从长远来看,只是复制粘贴对您没有帮助。 -
回复Thomas:我在accept函数上放了一个断点。对于第一级(根目录以下)的四个目录,accept 函数被调用两次。也就是说,为四个目录中的每一个调用accept(),然后为这四个目录中的每一个再次调用它。第一级目录下的任何文件或目录都不会调用它。我为每个 node.getDisplayName() 添加了一个 System.out.print,这样我就可以知道它被调用了哪些目录。
标签: java netbeans netbeans-platform filefilter