Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java jfilechooser仅列出;您好*.txt文件“;并且没有目录更改_Java_Swing_Jfilechooser_Filechooser - Fatal编程技术网

java jfilechooser仅列出;您好*.txt文件“;并且没有目录更改

java jfilechooser仅列出;您好*.txt文件“;并且没有目录更改,java,swing,jfilechooser,filechooser,Java,Swing,Jfilechooser,Filechooser,我正在尝试使用JFileChooser选择具有以下名称格式的文件:LS48*.drv。 同时,我想限制用户只查看特定目录,比如c:\data。因此,我不希望用户能够更改目录或其他驱动器名。 下面是我的代码段的基础。你能给我一些提示吗 m_fileChooser = new JFileChooser("c:\\data"); // looking for LS48*.drv files m_fileChooser.setFileFilter(new FileNameExtensionFilt

我正在尝试使用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"));

您需要实现自己的
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());

}

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

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


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

这就是您所指的类吗?如果是,请将其编辑到您的代码中。谢谢,我刚刚通过一个实例添加了它。另外,我想知道你是否可以看看这个问题:谢谢你的回答。你能检查一下这个问题吗?我从@Boro得到了一个提示,使用此代码限制用户只查看特定目录: