我尝试从窗口对话框中排除类型文件。
void setup() {
selectFolder("Select a folder to process:", "folderSelected");
}
void folderSelected(File selection) {
if (selection == null) {
println("Window was closed or the user hit cancel.");
} else {
println("User selected " + selection.getAbsolutePath());
printArray(getFolderContent(selection));
}
}
import java.io.FilenameFilter;
static final String[] exts = { ".gif", ".png", ".jpeg", ".jpg", ".tiff", ".tif"};
static final FilenameFilter pictsFilter = new FilenameFilter() {
boolean accept(File dir, String name) {
name = name.toLowerCase();
for (int i = exts.length; i-- != 0;) {
if (name.endsWith(exts[i])) {
return true;
}
}
return false;
}
};
static final File[] getFolderContent(File dir) {
return dir.listFiles(pictsFilter);
}
我不想使用JChooser
,因为它非常坚固而且很旧UI
。我尝试使用FileDialog
,因为用于显示文件的窗口具有OSX设计对应关系。但是我找不到任何代码来设置打开窗口时排除类型文件的可能性。我发现唯一的事情是使用下面的代码在选择文件夹后排除了文件;但是我觉得这个解决方案不是很好!
我的目的是可以直接在窗口中查看文件是否经过授权。
答案 0 :(得分:1)
要使用文件名过滤器,您需要创建它并在文件对话框中对其进行设置。
final String[] exts = { ".gif", ".png", ".jpeg", ".jpg", ".tiff", ".tif"};
FileDialog dialog = new FileDialog(frame, "select file", FileDialog.LOAD);
dialog.setFilenameFilter(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
name = name.toLowerCase();
for (int i = 0; i < exts.length; i++) {
if (name.endsWith(exts[i])) {
return true;
}
}
return false;
}}
);
请注意,根据javadoc:
文件名过滤器在Sun的Microsoft Windows参考实现中不起作用。