2014-09-04 5 views
2

파일 또는 디렉토리를 선택할 수있는 JFileChooser를 만들 수 있습니까? 선택자에서 filefilter를 사용하면 filter 옵션에 포함 된 파일 만 선택할 수 있기 때문에 더 이상 디렉토리를 선택할 수 없습니다.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); 

전화 그리고 그런 식으로 당신은 파일이나 디렉토리 중 하나를 선택할 수 있습니다. 이것은 필터의 조합과 함께 작동합니다.

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

오, 젠장 .... 그만큼 쉽게 :-p 대단히 감사합니다! – prototype0815

1

파일을 선택하고 디렉토리이

file_chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 

만 디렉토리를 선택하는 시도하기 위해이

dir_chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 

이유로서
시도 엔 ame는 파일 필터를 추가하면 ceratin 유형의 파일 만 필터링하여 이미지 파일 만 선택하려는 경우 .jpg, .png 등의 특정 유형의 파일 만 선택할 수 있습니다. 그러나 디렉토리 나 파일 만 선택하려면 JFileChooser 인스턴스의 파일 선택 모드를 설정해야합니다. 요구 사항에 따라 모드를 설정하십시오.

+0

내가이 옵션 (setFileSelectionMode을) 알고

는 Btw는 당신이 (그것은 또한 폴더를 받아들이는) 정확히 원하는 않는 FileNameExtensionFilter이 너무 파일 필터를 구현할 필요가 없습니다. 그러나 setFileFilter와 함께 작동하지는 않습니다. 나는 전에 그것을 시도하고, 나는 동일한 결과를 얻었다. 디렉토리 또는 파일을 선택하는 방법이어야합니다. – prototype0815

+0

FILES_ONLY는 여전히 디렉토리를 볼 수있게 해 주므로 선택할 수는 없습니다. 일부 디렉토리 만 허용하려면'JFileChooser.FILES_AND_DIRECTORIES'를 사용하고 관심있는 디렉토리에서'true'를 반환하는 필터를 작성해야합니다. – AngerClown

+0

그것의 명백한. FILES_ONLY라는 이름은 파일 만 선택할 수 있음을 의미합니다. 그는 두 코드가 모두 필요하므로 코드를 편집했습니다 – Niru