[JAVA](Swing) JFileChooser - 파일 열기창 구현 및 경로 출력

개발하는자·2022년 3월 17일
2

JAVA Swing

목록 보기
1/2
post-thumbnail

JFileChooser
1. 버튼 및 레이블 추가
2. 버튼 클릭 이벤트
3. 코드

JFileChooser

Java Swing에서는 JFileChooser를 통해 파일창을 열 수 있습니다.




1. 버튼 및 레이블 추가

JFrame class를 상속받고 아래 코드로 버튼 및 레이블을 생성할 수 있습니다.

public class SwingFileJChooser extends JFrame {

.
. 중략
.

JButton button = new JButton("파일 열기");
JLabel label = new JLabel("파일 없음");

setVisible(true); // 보이게 할지 여부
setLayout(new FlowLayout()); // 레이아웃 변경
add(button); // 컨테이너에 버튼 추가
add(label); // 컨테이너에 레이블 추가
setSize(500, 300); //컨테이너 사이즈
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 윈도우의 x를 누르면 종료




500*300 의 창에 가운데 정렬을 하여 버튼과 레이블을 넣어줬습니다.




2. 버튼 클릭 이벤트

버튼의 addActionListener() 메소드를 사용해 클릭 이벤트를 발생할 수 있습니다. ( 익명 객체로 구현 )

JFileChooser fileChooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");
// 인자 ( 사용자가 보여지는 텍스트, 사용 가능한 텍스트... )

.
. 중략
.

button.addActionListener(new ActionListener() { // 익명 객체
	@Override
    	public void actionPerformed(ActionEvent e) {
        	fileChooser.setFileFilter(filter); // 파일 필터 추가
            int returnVal = fileChooser.showOpenDialog(getParent());
            // 창 열기 정상 수행시 0 반환, 취소시 1 반환

			if(returnVal == JFileChooser.APPROVE_OPTION) {
				label.setText(fileChooser.getSelectedFile().getPath());
                // 레이블에 파일 경로 넣기
			}
      	}
});




3. 코드

import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class SwingFileJChooser extends JFrame {

    JFileChooser fileChooser = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");
    // 인자 ( 사용자가 보여지는 텍스트, 사용 가능한 텍스트... )

    public static void main(String[] args) {
        SwingFileJChooser fileJChooser = new SwingFileJChooser();

        fileJChooser.printFilePath();
    }

    public void printFilePath() {

        JButton button = new JButton("파일 열기");
        JLabel label = new JLabel("파일 없음");

        setVisible(true); // 보이게 할지 여부
        setLayout(new FlowLayout()); // 레이아웃 변경
        add(button); // 컨테이너에 버튼 추가
        add(label); // 컨테이너에 레이블 추가
        setSize(500, 300); //컨테이너 사이즈
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 윈도우의 x를 누르면 종료


        button.addActionListener(new ActionListener() { // 익명 객체
            @Override
            public void actionPerformed(ActionEvent e) {
                fileChooser.setFileFilter(filter); // 파일 필터 추가
                int returnVal = fileChooser.showOpenDialog(getParent());
                // 창 열기 정상 수행시 0 반환, 취소시 1 반환

                if(returnVal == JFileChooser.APPROVE_OPTION) {
                    label.setText(fileChooser.getSelectedFile().getPath());
                    // 레이블에 파일 경로 넣기
                }
            }
        });

    }
}




코드 이미지

profile
To the moon.

0개의 댓글