관리 메뉴

오버플로

[Java] File Dialog 본문

Java

[Java] File Dialog

NACO 2021. 8. 23. 20:04

 File Dialog 

- 하드디스크에 존재하는 파일을 선택할 때 사용하는 컴포넌트

- java.awt package에서 제공

- OS에서 제공하는 FileDialog를 그대로 사용함

 

- 사용법)

1. 객체생성 :

   FileDialog fd = new FileDialog(부모 윈도우, “파일 다이얼로그 타이틀”, 모드);

   >> 모드 - 열기모드 사용 : FileDialog.LOAD

                     저장모드 사용 : FileDialog.SAVE

2. 가시화 : fd.setVisiable(true);

3. 파일의 경로 얻기 (파일이 어떤 폴더에 존재하는지) : String path = fd.getDirectory();

           >> 취소 버튼을 누르면 null이 반환됨 / null 확인 후 사용하는 코드 필수

4. 파일명 얻기 : String name = fd.getFile();

           >> 취소 버튼을 누르면 null이 반환됨 / null 확인 후 사용하는 코드 필수

 


# 오늘의 코딩 #

- FileDialog로 파일 경로를 가져와보쟈

import java.awt.FileDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

@SuppressWarnings("serial")
public class UseFileDialog extends JFrame implements ActionListener {

	private JButton jbtnOpen;
	private JButton jbtnSave;
	private JTextField jtf;

	public UseFileDialog() {

		jbtnOpen = new JButton("파일열기");
		jbtnSave = new JButton("파일저장");
		jtf = new JTextField();

		jtf.setBorder(new TitledBorder("파일 경로"));

		JPanel jpCenter = new JPanel();
		jpCenter.add(jbtnOpen);
		jpCenter.add(jbtnSave);

		add("Center", jpCenter);
		add("South", jtf);

		jbtnOpen.addActionListener(this);

		setBounds(100, 100, 500, 150);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}// UseFileDialog

	@Override
	public void actionPerformed(ActionEvent e) {

		if (e.getSource() == jbtnOpen) { // 파일열기 버튼 선택하면 파일경로를 가져와보자
			FileDialog fdOpen = new FileDialog(this, "파일열기",FileDialog.LOAD);
			fdOpen.setVisible(true);

			String path = fdOpen.getDirectory(); // 파일경로 
			String name = fdOpen.getFile(); // 파일이름
			
			if (path != null) { // 파일이 선택되었다면 텍스트필드에 파일 경로를 보여주자
				jtf.setText(path+name);
			} // end if
		} // end if
		
		if(e.getSource() == jbtnSave) { // 얜 스트림배우고 나서 해볼 예쩡!
			FileDialog fdSave = new FileDialog(this, "파일열기",FileDialog.SAVE);
		}//end if
		
	}// actionPerformed
	
	public static void main(String[] args) {
		new UseFileDialog();
	}// main

}// class

- 일단 간단한 다이얼로그를 만들고 파일열기/저장 버튼을 클림함에 따라 수행하는 일이 다르게 작성했다.

- 파일 저장은 스트림까지 마스터하고 추가해볼 예정!_!

 

# 출력 결과 #

 

실행하면 나오는 JDialog
파일열기 버튼을 클릭하면 파일을 선택할 수 있고
내가 선택한 파일의 경로를 가져올 수 있음

 


#9/04 코딩 추가

 - 스트림을 이용해서 파일을 저장해보자!!

- 기존 actionPerfomed method에서 파일저장 버튼 클릭시 수행할 내용을 추가했다.

		if (e.getSource() == jbtnSave) {
			FileDialog fdSave = new FileDialog(this, "파일저장", FileDialog.SAVE);
			fdSave.setVisible(true);

			String path = fdSave.getDirectory(); // 선택된 경로 가져오기
			String name = fdSave.getFile(); // 작성한 파일명 가져오기

			if (path == null) { // 취소 등 발생하면 return
				return;
			}//end if
			
			File file = new File(path); // 선택된 경로가 있으면 file 객체 생성

			BufferedWriter br = null;
			try {
				br = new BufferedWriter(new FileWriter(file + "/" + name)); // 스트림연결
				br.write("저장된 파일"); //쓸 내용
				br.flush(); // 목적지로 분출

				JOptionPane.showMessageDialog(this, "파일이 생성되었습니다."); // 사용자에게 알림

				br.close(); // 다 쓴 스트림 끊기
			} catch (IOException e1) {
				e1.printStackTrace();
			} // end catch

		} // end if

	}// actionPerformed

 

 

# 출력 결과 #

- 파일 저장 버튼을 클릭하면 save모드의 file dialog가 생성되고 파일 이름을 작성하여 저장을 누르면!!

- 파일이 잘 생성되었다는 메시지와 함께 저장된 파일을 확인할 수 있다!

 

'Java' 카테고리의 다른 글

[Java] Exception Handling - Try~catch / Finally  (0) 2021.08.25
[Java] Exception Handling  (0) 2021.08.24
[Java] JOptionPane / JDialog  (0) 2021.08.22
[Java] Adapter Class  (0) 2021.08.20
[Java] Menu / Event Handling  (0) 2021.08.19
Comments