2014-09-04 2 views
2

можно ли создать JFileChooser, который может выбрать файл или каталог? Потому что, если я использую filefilter в своем выборе, можно только выбрать файлы, включенные в параметр фильтра, но я больше не могу выбрать каталог.JFileChooser для выбора каталога или одного файла

это мой JFileChooser

JFileChooser ch = new JFileChooser(); 
    ch.setAcceptAllFileFilterUsed(false); 
    ch.setFileFilter(new FileFilter() { 

    public boolean accept(File f) { 
     if (f != null && f.isDirectory()) { 
     return true; 
     } 
     if (f == null || !f.getName().toUpperCase().endsWith(".PROPERTIES")) { 
     return false; 
     } 
     return true; 
    } 

    public String getDescription() { 
     return "Property Files" + " (*.properties)"; 
    } 
    }); 
    ch.setCurrentDirectory(new File(".")); 
    ch.showOpenDialog(this); 
    if (ch.getSelectedFile() != null) { 
    ressource = ch.getSelectedFile(); 
    } 
    else { 
    return; 
    } 
    txtRessource.setText(ressource.getAbsolutePath()); 

ответ

1

Просто позвоните

ch.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 

И таким образом вы будете иметь возможность выбрать файл или каталог. Это работает с комбинацией вашего фильтра.

Btw вы не слишком реализовать фильтр файлов, есть FileNameExtensionFilter, который делает именно то, что вы хотите (он также принимает папки):

ch.setFileFilter(new FileNameExtensionFilter("Properties file", "properties")); 
+0

О, черт ... Это очень легко :-p спасибо большое! – prototype0815

1

Для выбора файлов и каталогов попробовать этот

file_chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 

И выбрать только каталоги попробовать этот

dir_chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 

ПРИЧИНУ
Как N ame предлагает, добавление фильтра файлов будет только отфильтровывать кератинные типы файлов и позволит вам выбрать только определенный тип файла, например .jpg, .png и т. д., если вы хотите выбрать только файлы изображений. Но чтобы выбрать каталог или только файл, вы должны установить режим выбора файла экземпляра JFileChooser. Установите режим в соответствии с вашими требованиями.

+0

я знаю, этот вариант (setFileSelectionMode). Но он не работает в сочетании с setFileFilter. Я попробовал это раньше, и я получил тот же результат. Это должен быть способ, выбрать каталог или файл. – prototype0815

+0

Также стоит отметить, что FILES_ONLY по-прежнему позволит вам видеть каталоги, вы просто не можете их выбрать. Если вы хотите разрешить только некоторые каталоги, вам нужно использовать 'JFileChooser.FILES_AND_DIRECTORIES', а затем написать фильтр, который возвращает' true' в интересующих вас каталогах. – AngerClown

+0

Это очевидно. Имя FILES_ONLY означает, что могут быть выбраны только файлы. Так как ему нужны оба вместе, поэтому я отредактировал код – Niru

Смежные вопросы