2

我正在尝试使用 JFileChooser 选择具有以下名称格式的文件:LS48*.drv。同时我想限制用户只查看一个特定的目录,比如c:\data。所以我不希望用户能够更改目录或其他驱动器名称。下面是我的代码段的基础,您能否给我一些提示:

 m_fileChooser = new JFileChooser("c:\\data"); // looking for LS48*.drv files
  m_fileChooser.setFileFilter(new FileNameExtensionFilter("drivers(*.drv, *.DRV)", "drv", "DRV"));
4

2 回答 2

6

您将需要实现FileFilter自己的子类,并将其设置为文件选择器而不是FileNameExtensionFilter实例。

accept在这个子类中的方法将类似于以下内容:

private static final Pattern LSDRV_PATTERN = Pattern.compile("LS48.*\\.drv");
public boolean accept(File f) {
    if (f.isDirectory()) {
        return false;
    }

    return LSDRV_PATTERN.matcher().matches(f.getName());

}
于 2012-05-25T22:05:55.703 回答
4

要防止目录更改,请使用以下命令:

File root = new File("c:\\data");
FileSystemView fsv = new SingleRootFileSystemView( root );
JFileChooser chooser = new JFileChooser(fsv);

检查这个:http ://tips4java.wordpress.com/2009/01/28/single-root-file-chooser/

至于文件名模式,您可以使用 java 正则表达式。

于 2012-05-25T22:13:13.280 回答