JFileChooser
1. 버튼 및 레이블 추가
2. 버튼 클릭 이벤트
3. 코드
Java Swing에서는 JFileChooser를 통해 파일창을 열 수 있습니다.
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 의 창에 가운데 정렬을 하여 버튼과 레이블을 넣어줬습니다.
버튼의 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());
// 레이블에 파일 경로 넣기
}
}
});
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());
// 레이블에 파일 경로 넣기
}
}
});
}
}