Swing 사용해서 GUI를 구현하는 예제

dev_hnbm·2023년 11월 14일
0

대덕인재개발원

목록 보기
16/30
package kr.or.ddit.basic;

import java.awt.Panel;
import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

public class DialogTest {

	public static void main(String[] args) {
		// SWING의 파일 열기 창, 파일 저장 창 만들기 예제
		JFileChooser chooser = new JFileChooser();
		
		// [ 파일 유형: 모든파일 ]이 true, 생략시 보이고 false일 때 안 보임
		chooser.setAcceptAllFileFilterUsed(true); 
		
		// [ 저장 위치: ] 처음 보여질 위치 설정
		chooser.setCurrentDirectory(new File("d:/d_other"));
		
		// 선택할 파일의 확장자 설정
		// (처음보이는이름, 실제확장자)
		FileNameExtensionFilter txt = 
				new FileNameExtensionFilter("텍스트문서(*.txt)", "txt");
		FileNameExtensionFilter img = 
				new FileNameExtensionFilter("이미지 파일", "png", "jpg", "gif");
		FileNameExtensionFilter doc = 
				new FileNameExtensionFilter("MS Word 문서", new String[] {"doc", "docx"});
		FileNameExtensionFilter pdf = 
				new FileNameExtensionFilter("PDF 문서", "pdf");
		
		chooser.addChoosableFileFilter(txt);
		chooser.addChoosableFileFilter(img);
		chooser.addChoosableFileFilter(doc);
		chooser.addChoosableFileFilter(pdf);
		
		// [ 파일 유형: ] 중 처음 보여질 목록 설정
		chooser.setFileFilter(doc);
		
		// 위 코드는 동일, Open/Save만 다르게
//		int result = chooser.showOpenDialog(new Panel()); // 열기용 창
		int result = chooser.showSaveDialog(new Panel()); // 저장용 창
		
		// 버튼 누르는 거 확인하기
		if(result == JFileChooser.APPROVE_OPTION) { // [ 저장 ] 또는 [ 열기 ] 버튼 눌렀을 때 참
			File selectFile = chooser.getSelectedFile(); // 선택한 파일 정보를 갖는 File 객체 반환
			System.out.println("선택한 파일: " + selectFile.getAbsolutePath());
		}
		
		
	}

}






package kr.or.ddit.basic;

import java.awt.Panel;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

/*
 'D:/d_other' 폴더에 있는 '펭귄.jpg' 파일을
 'D:/d_other/연습용' 폴더에 '복사본_펭귄.jpg' 파일로 복사하는 프로그램 작성
  DialogTest.java 참고
 */
public class FileCopyDialog {

	public static void main(String[] args) {

		FileCopyDialog copy = new FileCopyDialog();
		
		File file = copy.showDialog("OPEN"); // 원본 파일 선택
		
		File targetFile = copy.showDialog("SAVE"); // 대상 파일 선택 (저장할 파일) 
		
		if(file == null || targetFile == null) {
			System.out.println("원본 파일이나 대상 파일을 지정하지 않았습니다.");
			System.out.println("복사 작업을 중지합니다.");
			return;
		}
		
		if(!file.exists()) {
			System.out.println(file.getPath() + " 파일이 없습니다.");
			System.out.println("복사 작업을 중지합니다.");
			return;
		}
		
		try {
			// 복사할 원본 파일을 처리할 스트림 객체 생성
			FileInputStream fin = new FileInputStream(file);
			BufferedInputStream bin = new BufferedInputStream(fin);
			
			// 복사될 대상 파일을 처리할 스트림 객체 생성
			FileOutputStream fout = new FileOutputStream(targetFile);
			BufferedOutputStream bout = new BufferedOutputStream(fout);
			
			System.out.println("복사 시작..");
			
			int data;
			
			while((data = bin.read()) != -1) {
				bout.write(data);
			}
			
			bout.flush();
			
			bin.close();
			bout.close();
			
			System.out.println("복사 작업 완료!!");
			
		} catch (IOException e) {}
		
	}
	
	public File showDialog(String option) {
		
		JFileChooser chooser = new JFileChooser();

		chooser.setAcceptAllFileFilterUsed(true);

		chooser.setCurrentDirectory(new File("d:/d_other"));

		FileNameExtensionFilter txt = new FileNameExtensionFilter("텍스트문서(*.txt)", "txt");
		FileNameExtensionFilter img = new FileNameExtensionFilter("이미지 파일", "png", "jpg", "gif");
		FileNameExtensionFilter doc = new FileNameExtensionFilter("MS Word 문서", new String[] { "doc", "docx" });
		FileNameExtensionFilter pdf = new FileNameExtensionFilter("PDF 문서", "pdf");

		chooser.addChoosableFileFilter(txt);
		chooser.addChoosableFileFilter(img);
		chooser.addChoosableFileFilter(doc);
		chooser.addChoosableFileFilter(pdf);
		
		
// ---------------------------------- DialogTest.java랑 달라지는 부분 ----------------------------------
		int result;
		
		if("SAVE".equals(option.toUpperCase())) {			
			result = chooser.showSaveDialog(new Panel()); // 저장용 창
		} else if("OPEN".equals(option.toUpperCase())) {
			result = chooser.showOpenDialog(new Panel()); // 열기용 창
		} else {
			System.out.println("option은 SAVE 또는 OPEN만 가능합니다.");
			return null;
		}
		
		File selectFile = null;
		
		if (result == JFileChooser.APPROVE_OPTION) {
			selectFile = chooser.getSelectedFile();
		}
		
		return selectFile;
	
	}

}

0개의 댓글