본문 바로가기

BackEnd/Java

[java]이것이 자바다 부록 Java UI 12-2 (Swing을 이용한 파일 다이얼로그)

728x90
반응형

(3) 파일 다이얼로그

   ▷ 사용자가 파일을 선택할 때 사용, Swing에서는 JFileChooser를 제공

   ▷ showOpenDialog ( )와 showSaveDialog ( ) 메소드를 이용해 열기와 저장용 파일 다이얼로그를 띄울 수 있음 

 

 

   ▷ 파일 다이얼로그의 기본 디렉토리 위치는 사용자의 홈 디렉토리, 변경하고 싶다면 setCurrentDirectory() 메소드 이용

jFileChooser.setCurrentDirectory(new File("C:/Temp"));

 

   ▷ showOpenDialog()와 showSaveDialog() 메소드는 모두 int 값을 리턴

 

◎ showOpenDialog()와 showSaveDialog() 메소드의 버튼 구분을 위한 상수

NO 옵션 상수 설명
1 APPROVE_OPTION [열기], [저장] 버튼을 클릭했을 때
2 CANCEL_OPTION 취소], [x] 버튼을 클릭했을 때

 

◎ 파일 종류를 추가한 파일 다이얼로그와 버튼 선택에 따라 파일 경로 출력 예제

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.filechooser.FileNameExtensionFilter;

public class JFileChooserExample extends JFrame {
	private JButton btnFileOpen, btnFileSave;
	
	// 메인 윈도우 설정
	public JFileChooserExample() {
		this.setTitle("JFileChooserExample");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.getContentPane().setLayout(new GridLayout(2,1));
		this.getContentPane().add(getBtnFileOpen());
		this.getContentPane().add(getBtnFileSave());		
		this.setSize(150, 100);
	}
	
	// 열기 버튼 생성
	public JButton getBtnFileOpen() {
		if(btnFileOpen == null) {
			btnFileOpen = new JButton();
			btnFileOpen.setText("File Open");
			btnFileOpen.addActionListener(new ActionListener() {	
				public void actionPerformed(ActionEvent e) {
					// 파일 열기 다이얼로그 보여주기
					
					JFileChooser jFileChooser = new JFileChooser();
					jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter(
							"그림파일(*.jpg, *.gif, *.bmp)", "jpg", "gif", "bmp"));
					jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter(
							"텍스트 파일(*.txt)", "txt"));
					
					int option = jFileChooser.showSaveDialog(JFileChooserExample.this);
					// 어떤 버튼을 클릭했는지 확인하기
					if(option == jFileChooser.APPROVE_OPTION) {
						File file = jFileChooser.getSelectedFile();
						System.out.println("열어야 할 파일 절대경로: " + 
								file.getAbsolutePath());
						System.out.println("열어야 할 파일 이름: " + file.getName());
					} else if(option == JFileChooser.CANCEL_OPTION) {
						System.out.println("취소 또는 닫기를 눌렀군요");						
					}
				}
			});
		}
		return btnFileOpen;
	}
								
	// 저장 버튼 생성
	public JButton getBtnFileSave() {
		if(btnFileSave == null) {
			btnFileSave = new JButton();
			btnFileSave.setText("File Save");
			btnFileSave.addActionListener(new ActionListener() {	
				public void actionPerformed(ActionEvent e) {
					// 파일 저장 다이얼로그 보여주기
					
					JFileChooser jFileChooser = new JFileChooser();
					jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter(
							"그림파일(*.jpg, *.gif, *.bmp)", "jpg", "gif", "bmp"));
					jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter(
							"텍스트 파일(*.txt)", "txt"));
					
					int option = jFileChooser.showOpenDialog(JFileChooserExample.this);
					// 어떤 버튼을 클릭했는지 확인하기
					if(option == jFileChooser.APPROVE_OPTION) {
						File file = jFileChooser.getSelectedFile();
						System.out.println("저장할 파일: " + file.getAbsolutePath());
					} else if(option == JFileChooser.CANCEL_OPTION) {
						System.out.println("취소 또는 닫기를 눌렀군요");						
					}
				}
			});
		}
		return btnFileSave;
	}
	
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				JFileChooserExample jFrame = new JFileChooserExample();
				jFrame.setVisible(true);
			}
		});
	}
}

 


1. File Open 클릭시
   ▷ Save 클릭 : 경로 지정시 지정 경로 출력
   ▷ Cancle 클릭 : '취소 또는 닫기를 눌렀군요' 출력
2. File Save 클릭시
   ▷ Save 클릭 : 경로 지정시 지정 경로 출력
   ▷ Cancle 클릭 : '취소 또는 닫기를 눌렀군요' 출

 

다이얼로그에서 JFileChooser로 열기와 저장용 파일 다이얼로그를 띄울 수 있습니다.

 

파일의 경로를 확인하는데 편리할 것 같네요!

 

더 많은 기능들에 대해서 배워볼게요~!!

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

728x90
반응형