我要求用户浏览JFileChooser
并选择文件夹。
但是在进行此选择时,不应允许用户选择根驱动器。 “Root Drive”是指Windows中的C:
或D:
等,以及UNIX / Linux中的/
。
我认为我不能在JFileChooser
使用过滤器,因为它的工作是浏览文件,因此过滤驱动器本身没有任何意义。
请建议一个适用于所有Windows / Linux文件系统的正确解决方案。
答案 0 :(得分:0)
您可attach event
使用它,然后在您的活动代码中应用过滤器以满足您的要求。
答案 1 :(得分:0)
这个怎么样?
//This file filter shouldn't be added to the chooser
final FileFilter filter = new FileFilter() {
@Override
public boolean accept(File f) {
if(!f.isDirectory())
return false;
for(File root : File.listRoots())
if(f.equals(root))
return false;
return true;
}
@Override
public String getDescription() { return null; }
};
JFileChooser chooser = new JFileChooser() {
@Override
public void approveSelection() {
if(filter.accept(getSelectedFile()))
super.approveSelection();
else
JOptionPane.showMessageDialog(this, "Illegal selection");
}
};
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);