java jfilechooser для отображения только файлов hello*.txt без изменения каталога

Я пытаюсь использовать 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"));

person C graphics    schedule 25.05.2012    source источник
comment
Я получил этот совет от @Boro, чтобы использовать этот код для ограничения доступа пользователя только к определенному каталогу: tips4java.wordpress.com/2009/01/28/выбор одного корневого файла   -  person C graphics    schedule 15.06.2012


Ответы (2)


Вам нужно будет реализовать собственный подкласс 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());

}
person Hakan Serce    schedule 25.05.2012
comment
Спасибо за Ваш ответ. Можете ли вы проверить этот вопрос, пожалуйста? stackoverflow.com/questions/11041575/ - person C graphics; 15.06.2012

Чтобы предотвратить изменения каталога, используйте это:

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.

person Wederoney    schedule 25.05.2012
comment
Это класс, на который вы ссылаетесь tips4java.wordpress.com /2009/01/28/single-root-file-chooser Если это так, отредактируйте его в своем коде. - person Boro; 26.05.2012
comment
Спасибо, я только что добавил через комментарий. Также мне было интересно, можете ли вы проверить этот вопрос: stackoverflow.com/questions/11041575/ - person C graphics; 15.06.2012