JFileChooser example
JFileChooser 를 이용한 파일열기 / 저장 대화상자 예
파일 열기 다이얼로그
JFileChooser chooser = new JFileChooser();
chooser.setFileFilter(new CustomFilter());
chooser.setCurrentDirectory(new File("D:/test"));
int returnVal = chooser.showOpenDialog(this);
if(returnVal == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
try {
textArea.read(new FileReader(file.getAbsolutePath()),"텍스트 파일");
} catch (IOException ex) {
ex.printStackTrace();
}
}
위의 코드에 사용된 커스텀필터 클래스
CustomFilter.java
import java.io.File;
class CustomFilter extends javax.swing.filechooser.FileFilter {
@Override
public boolean accept(File file) {
return file.isDirectory() || file.getAbsolutePath().endsWith(".txt");
}
@Override
public String getDescription() {
return "Text documents (*.txt)";
}
}
파일 저장 대화상자
이벤트 핸들러 메소드에 다음과 같이 입력한다
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Specify a file to save");
int userSelection = fileChooser.showSaveDialog(this);
if (userSelection == JFileChooser.APPROVE_OPTION) {
int n = JOptionPane.showConfirmDialog(this, "변경된 내용을 저장하시겠어요?", "파일저장확인", JOptionPane.YES_NO_OPTION);
//System.out.println("선택:"+n);
if(n==JOptionPane.NO_OPTION) return;
File fileToSave = fileChooser.getSelectedFile();
System.out.println("Save as file: " + fileToSave.getAbsolutePath());
FileWriter fw = null;
try {
fw = new FileWriter(fileToSave);
fw.write(textArea.getText());
fw.close();
System.out.println("다른 이름으로 저장 성공");
} catch (IOException ex) {
Logger.getLogger(SwingFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}