▶ JColorChooser
- 사용자가 색상 팔레트에서 하나의 색상을 선택할 수 있는 “색상 선택기” 컴포넌트이다.
- 색상 선택기는 탭이 붙어있는 패널과 미리보기 패널로 구성된다.
- 탭이 붙어있는 패널은 각기 다른 색상 모델을 지원한다.
- 미리보기 패널은 현재 선택된 색상을 다양한 방식으로 표시한다.
JColorChooser |
|
생성자 |
설명 |
JColorChooser() |
초기 색상으로 Color.white를 표시하는 색상 선택기를 생성한다. |
JColorChooser(Color color) | 매개변수로 지정된 색상을 초기 색상으로 가지는 색상 선택기를 생성한다. |
- JColorChooser 예제
public class ColorChooserTest extends JFrame implements ChangeListener {
//FIELDS
//색상 선택기를 필요로하는 다른 패키지(상속된 클래스만)에서도 사용할 수 있도록 접근 제한자를 protected로 설정
protected JColorChooser colorChooser = new ColorChooser();
private JPanel panel = new JPanel();
//CONSTRUCTOR
ColorChooserTest() {
setTitle("색상 선택기 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack(); //컴포넌트의 크기에 자동으로 맞춰지게 해주는 프레임용 메소드
//주의! 색상 선택기의 선택 모델에 리스너를 추가하여야 한다.
colorChooser.getSelectionModel().addChangeListener(this);
colorChooser.setBorder(BorderFactory.createTitleBorder("색상 선택"));
panel.add(colorChooser);
add(panel);
setVisible(true);
}
//METHODS
@Override
public void stateChanged(ChangeEvent e) {
Color selectedColor = colorChooser.getColor(); //색상 선택기의 현재 컬러값 반환
}
public static void main(String[] args) {
new ColorChooserTest();
}
}
▶ JFileChooser
- 파일 시스템을 탐색하여 파일이나 디렉토리를 선택하는 “파일 선택기” 컴포넌트이다.
- 단순히 파일을 선택하기 위한 것으로, 프로그램 내에서 읽거나 쓰거나 수정하는 등의 동작들은 UI를 구현해야한다.
- 파일 선택기를 생성할 때 final 키워드를 붙이는 것이 일반적이다. 파일 선택기를 바꿔가며 사용하지는 않기 때문이다.
final JFileChooser fileChooser = new JFileChooser();
- 파일 선택기는 다음에 배울 “대화상자”이므로 파일을 선택하기 위한 창으로 다이얼로그를 사용한다.
- 파일 선택기 열기 : 주로 파일 열기 동작(이벤트)을 처리하기 위한 액션 리스너에 등장한다.
int showOpenDialog(Component component)
반환값은 사용자의 파일 선택여부를 나타내는 정수값이다.
일반적으로 APPROVE_OPTION 인지만 검사하면 된다.
매개변수로 대화상자의 부모 컴포넌트를 전달한다.
부모 컴포넌트는 대화상자의 위치에 영향을 준다. 디폴트 값은 사용자의 홈 디렉토리에 있는 모든 파일을 표시하는 것이다.
- 선택된 파일 얻기 : 선택된 파일을 File 객체로 반환한다.
File getSelectedFile();
- 초기 디렉토리 설정 : 매개변수로 디렉토리 경로를 준다. 경로의 종류는 절대경로와 상대경로가 있다.
void setCurrentDirectory("~");
- 파일 저장하기 : 반환값과 매개변수는 showOpenDialog 메소드와 유사하다.
int showSaveDialog(Component component)
- JFileChooser 예제
public class FileChooserTest extends JFrame implements ActionListener {
//FIELDS
JButton openBtn = new JButton("File Open!");
JButton saveBtn = new JButton("File Save!");
JFileChooser fileChooser = new JFileChooser();
JPanel fcPanel = new JPanel();
JLabel pathLabel = new JLabel("선택한 파일의 경로 보여주기");
//CONSTRUCTOR
FileChooserTest() {
setTitle("파일 선택기 예제");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
openBtn.addActionListener(this);
saveBtn.addActionListener(this);
fcPanel.add(openBtn);
fcPanel.add(saveBtn);
add(pathLabel, BorderLayout.NORTH);
add(fileChooser, BorderLayout.CENTER);
setVisible(true);
}
//METHODS
@Override
public void actionPerformed(ActionEvent e) {
int returnValue;
//파일 오픈 버튼에 대한 액션 이벤트 처리
if(e.getSource() == openBtn) {
returnValue = fileChooser.showOpenDialog(this);
if(returnValue == JFileChooser.APPROVE_OPTION) { //실제 파일 오픈
//선택된 파일의 경로 얻기
String path = fileChooser.getSelectedFile().getPath();
pathLabel.setText(path);
}else {
//사용자 취소 동작이 있음
}
} else if(e.getSource() == saveBtn) { //파일 저장 버튼에 대한 액션 이벤트 처리
returnValue = fileChooser.showSaveDialog(this);
if(returnValue == JFileChooser.APPROVE_OPTION) {
//실제 파일 저장
}else {
//사용자 취소 동작이 있음
}
}
}
public static void main(String[] args) {
FileChooserTest fct = new FileChooserTest();
}
}
'Programming Language > JAVA' 카테고리의 다른 글
| 32. JOptionPane, JDialog - 대화 상자 (0) | 2017.07.22 |
|---|---|
| 31. JMenuBar - 메뉴바 설정하기 (0) | 2017.07.13 |
| 29. JTree - 트리 (0) | 2017.06.29 |
| 28. JSlider - 슬라이더 (0) | 2017.06.29 |
| 27. JSpinner - 스피너 (0) | 2017.06.29 |