我有一个要求,用户浏览JFileChooser
并选择一个文件夹。
但是在进行此选择时,不应允许用户选择根驱动器。“根驱动器”是指Windows 和C:
UNIX /Linux 中的等等。D:
/
我认为在这里我不能使用过滤器,JFileChooser
因为它的工作是浏览文件,因此过滤驱动器本身没有任何意义。
请提出一个适用于所有 Windows/Linux 文件系统的适当解决方案。
我有一个要求,用户浏览JFileChooser
并选择一个文件夹。
但是在进行此选择时,不应允许用户选择根驱动器。“根驱动器”是指Windows 和C:
UNIX /Linux 中的等等。D:
/
我认为在这里我不能使用过滤器,JFileChooser
因为它的工作是浏览文件,因此过滤驱动器本身没有任何意义。
请提出一个适用于所有 Windows/Linux 文件系统的适当解决方案。
您可以attach event
使用它,然后在您的事件代码中应用过滤器以满足您的要求。
这个怎么样?
//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);