从Swing中的JFileChooser中排除根驱动器选择

时间:2013-04-09 09:25:01

标签: java swing jfilechooser

我要求用户浏览JFileChooser并选择文件夹。

但是在进行此选择时,不应允许用户选择根驱动器。 “Root Drive”是指Windows中的C:D:等,以及UNIX / Linux中的/

我认为我不能在JFileChooser使用过滤器,因为它的工作是浏览文件,因此过滤驱动器本身没有任何意义。

请建议一个适用于所有Windows / Linux文件系统的正确解决方案。

2 个答案:

答案 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);