하나는 모든 파일을 표시하고 다른 하나는 특정 확장자를 표시하는 두 가지 옵션이있는 파일 필터가 필요합니다.새 JFileChooser FileFilter를 설정하고 이전 파일을 재설정하십시오.
특정 확장 프로그램은 기본적으로 선택되어 있어야합니다.
저는 같은 JFileChooser를 두 번 사용합니다. 처음에는 .fas 파일을 표시하고 두 번째는 .xls 파일을 표시합니다.
지금이 코드를 사용하고 있지만 몇 가지 이유로 이전 파일 확장명을 덮어 쓰지 않습니다. 여기에 대한 많은 답은 JFileChooser를 재활용하면 비슷한 코드와 정확히 같은 문제를 갖습니다.
첫 번째 부분은 모든
fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
@Override
public boolean accept(File file) {
return file.isDirectory() || file.getAbsolutePath().endsWith(".fas");
}
@Override
public String getDescription() {
return "Fasta";
}
});
// more modern API, same result
// fileChooser.setFileFilter(new FileNameExtensionFilter("File fasta", "fas"));
제 2 부분을 작동합니다. 이것은 같은 JFileChooser의 두 번째 "여는 (opening)"에서 사용됩니다. 그냥 필터를 추가하는 것 같습니다 (.fas 파일을 선택하는 옵션이 남아 있습니다).
// delete name of previously selected file
File currentDirectory = fileChooser.getCurrentDirectory();
fileChooser.setSelectedFile(new File(""));
fileChooser.setCurrentDirectory(currentDirectory);
// set new file filter
fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
@Override
public boolean accept(File file) {
return file.isDirectory() || file.getAbsolutePath().endsWith(".xls");
}
@Override
public String getDescription() {
return "Excel 97";
}
});
// more modern API, same result
// fileChooser.setFileFilter(new FileNameExtensionFilter("Excel 97", "xls"));
첫 번째 선택과 두 번째 선택을 구별 할 필요가 없습니다. – Thomas
@ 토마스 감사합니다, 지금 고쳐졌습니다 – Agostino
@ 토마스 답변보다 더 읽기 쉽습니다 (그의 답변은 맞지만). – PhoneixS