0

我有一个要求,用户浏览JFileChooser并选择一个文件夹。

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

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

请提出一个适用于所有 Windows/Linux 文件系统的适当解决方案。

4

2 回答 2

0

您可以attach event使用它,然后在您的事件代码中应用过滤器以满足您的要求。

于 2013-04-09T09:32:37.917 回答
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);
于 2013-04-09T09:55:30.003 回答