【发布时间】:2014-03-10 13:57:05
【问题描述】:
我正在尝试创建一个 FileFilter,它只允许用户打开包含某个文件的目录。用例是这些目录是工作区,其中有一个名为 smart.workspace 的文件。
目前我的过滤器如下...
class SMARTWorkspaceFilter extends javax.swing.filechooser.FileFilter {
String description = "SMART Workspace";
String fileNameFilter = "smart.workspace";
SMARTWorkspaceFilter() {
}
@Override
public boolean accept(File file) {
log.debug("Testing file: " + file.getName());
if (file.isFile()) {
return false;
}
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
log.debug("Directory: " + f.isDirectory());
log.debug("Name: " + f.getName());
if (f.isDirectory()) {
return true;
}
if (f.getName().equals(fileNameFilter)) {
return true;
}
}
}
return false;
}
@Override
public String getDescription() {
return description;
}
}
显然我的问题是,为了允许用户导航到工作区文件夹,我必须允许子目录。
对于文件选择器,我使用选项DIRECTORIES_ONLY。
是否可以只允许用户根据目录内容选择目录?
例如目录 'workspace' 存在于 C://Folder1/Folder2/wokspace,我希望允许 FileChooser 在 C:// 'start' 并允许用户导航到 'workspace' 文件夹并接受它。 FileChooser 不应允许接受 Folder1 或 Folder2,但仍允许在 Folder1 和 Folder2 中导航。
【问题讨论】:
标签: java jfilechooser filefilter