是否可以制作一个可以选择文件或目录的JFileChooser? 因为,如果我在选择器中使用filefilter,则只能选择包含filter选项的文件,但我无法再选择目录。
这是我的JFileChooser
JFileChooser ch = new JFileChooser();
ch.setAcceptAllFileFilterUsed(false);
ch.setFileFilter(new FileFilter() {
public boolean accept(File f) {
if (f != null && f.isDirectory()) {
return true;
}
if (f == null || !f.getName().toUpperCase().endsWith(".PROPERTIES")) {
return false;
}
return true;
}
public String getDescription() {
return "Property Files" + " (*.properties)";
}
});
ch.setCurrentDirectory(new File("."));
ch.showOpenDialog(this);
if (ch.getSelectedFile() != null) {
ressource = ch.getSelectedFile();
}
else {
return;
}
txtRessource.setText(ressource.getAbsolutePath());
答案 0 :(得分:3)
致电
ch.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
通过这种方式,您可以选择文件或目录。这适用于您的过滤器的组合。
顺便说一下,你也不必实现文件过滤器,有一个FileNameExtensionFilter可以完全满足您的要求(它也接受文件夹):
ch.setFileFilter(new FileNameExtensionFilter("Properties file", "properties"));
答案 1 :(得分:1)
要选择文件和目录,请尝试此
file_chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
并且只选择目录试试这个
dir_chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
<强>原因强>
顾名思义,添加文件过滤器只会过滤掉一种ceratin类型的文件,并且如果你只想选择图像文件,它将允许你只选择特定类型的文件,如.jpg,.png等。但是要选择目录或仅选择文件,您必须设置JFileChooser实例的文件选择模式。根据您的要求设置模式。