메모장(notepad) 만들기 - 열기, 저장, 새 파일, 종료 메서드 구현 ③
TO Do.
■ 메모장 제작
✓ ActionListener 객체의 속성과 동작
✓ 속성
. 선택된 메뉴를 판별하기 위한 문자열
. Notepad 객체의 레퍼런스
✓ 동작
. 종료가 선택되면 Notepad의 종료 메서드를 호출
. 종료가 아닌 다른 메뉴가 선택되면 메모장을 초기화하는 메서드를 호출
목표: 열기, 저장, 새 파일, 종료 리스너 구현하기
1. 메모장의 인터페이스 구현
레이아웃은 메모장 만들기 1편의 인터페이스를 참고했습니다. 못 보신 분들은 먼저 1을 보고 와주세요!!
2. 클래스 다이어그램
클래스 다이어그램
NoteActionListener 클래스의 중요 메서드
메서드 | 기능 |
public NoteActionListener (Notepad) | Notepad 클래스의 레퍼런스를 멤버변수에 저장 |
public void actionPerformed (ActionEvent) | 메모장의 메뉴가 선택되어있을 때 이벤트를 받아 메뉴에 해당하는 Notepad 클래스의 메서드를 호출 |
3. ActionListener 객체의 속성과 동작
■ ActionListener 객체의 속성과 동작
✓ 속성
. 선택된 메뉴를 판별하기 위한 문자열
. Notepad 객체의 레퍼런스
✓ 동작
. 종료 선택 -> Notepad의 종료 메서드를 호출
. 읽기 선택 -> 파일 선택 다이얼로그를 출력하여 파일의 이름을 얻어와 Notepad 클래스 파일을 읽는 메서드 호출
. 저장 선택 -> 파일 선택 다이얼로그를 출력하여 파일의 이름을 얻어와 Notepad 클래스의 파일을 저장하는 메서드 호출 (새 파일 저장)
. 다른 이름으로 저장 -> 파일 선택 다이얼로그를 출력하여 파일의 이름을 얻어와 저장
. 새파일 선택 -> 메모장을 초기화하는 메서드 호출
4. NoteActionListener.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
package notepad.step03;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
public class NoteActionListener implements ActionListener {
// 멤버변수
private Notepad frm;
String cmd;
// 생성자
public NoteActionListener(Notepad n) {
this.frm = n;
}
@Override
public void actionPerformed(ActionEvent e) {
cmd = e.getActionCommand();
switch (cmd) {
case "새파일":
frm.newFile();
break;
case "열기":
frm.openFile();
break;
case "저장":
if(frm.fileName.equals("")) { //다른이름으로 저장과 일반 저장을 구분하기 위함, 처음 실행시 일반저장버튼을 눌렀을때 chooser가 열리도록 함
int ret = frm.chooser.showSaveDialog(null);
if(ret != frm.chooser.APPROVE_OPTION) {
JOptionPane.showMessageDialog(null, "파일을 선택하지 않았습니다!", "경고", JOptionPane.WARNING_MESSAGE);
return;
}
frm.fileName = frm.chooser.getSelectedFile().getPath();
}
frm.saveFile(frm.ta.getText()); //저장
break;
case "다른이름으로저장": //무조건 chooser로 다이얼로그 열어서 저장
int ret = frm.chooser.showSaveDialog(null);
if (ret == JFileChooser.APPROVE_OPTION) {
frm.fileName = frm.chooser.getSelectedFile().getPath();
frm.saveFile(frm.ta.getText());
}
break;
case "종료":
frm.windowClosing(null);
break;
}
}
}
|
cs |
3. 함께 보면 좋은 글
'Language > JAVA' 카테고리의 다른 글
[JAVA] UDP 기반 통신 (JAVA 네트워크) | Yoon's Dev (0) | 2021.06.12 |
---|---|
[JAVA] 메모장(notepad) 만들기 - 열기, 저장, 새 파일, 종료 메서드 구현 ② | Yoon's Dev (0) | 2021.05.26 |
[JAVA] 메모장(notepad) 만들기 ① - 인터페이스 구현 | Yoon's Dev (0) | 2021.05.25 |
[JAVA] 스트림(Stream) 연산 옵션 타입 | Yoon's Dev (0) | 2021.05.20 |
[JAVA] 스트림(Stream) 연산 느긋한 연산, 조급한 연산, 병렬 처리 | Yoon's Dev (0) | 2021.05.18 |