메모장(notepad) 만들기 - 열기, 저장, 새 파일, 종료 메서드 구현 ③

TO Do.
■ 메모장 제작
✓ ActionListener 객체의 속성과 동작
✓ 속성
. 선택된 메뉴를 판별하기 위한 문자열
. Notepad 객체의 레퍼런스
✓ 동작
. 종료가 선택되면 Notepad의 종료 메서드를 호출
. 종료가 아닌 다른 메뉴가 선택되면 메모장을 초기화하는 메서드를 호출
목표: 열기, 저장, 새 파일, 종료 리스너 구현하기
1. 메모장의 인터페이스 구현
레이아웃은 메모장 만들기 1편의 인터페이스를 참고했습니다. 못 보신 분들은 먼저 1을 보고 와주세요!!
[JAVA] 메모장(notepad) 만들기 ① - 인터페이스 구현 | Yoon's Dev
메모장(notepad) 만들기 ① - 인터페이스 구현 TO Do. ■ 메모장 제작 ✓ 텍스트 파일을 읽고 쓰기 기능 구현 ✓ 자바의 입출력 적용 ✓ 자바의 그래픽 처리와 이벤트 처리 적용 목표: 메모장의 인
yooniron.tistory.com
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. 함께 보면 좋은 글
[JAVA] 메모장(notepad) 만들기 - 열기, 저장, 새 파일, 종료 메서드 구현 ② | Yoon's Dev
메모장(notepad) 만들기 - 열기, 저장, 새 파일, 종료 메서드 구현 ② TO Do. ■ 메모장 제작 ✓ 텍스트 파일을 읽고 쓰기 기능 구현 ✓ 자바의 입출력 적용 ✓ 자바의 그래픽 처리와 이벤트
yooniron.tistory.com
[JAVA] JAVA의 5가지 리스너 이벤트 처리 방법 (독립, 내부, 프레임, 익명, 람다식) | Yoon's Dev
JAVA의 5가지 리스너 이벤트 처리 방법 (독립, 내부, 프레임, 익명, 람다식) 학습 목표 독립적인 클래스로 이벤트 처리기를 작성 내부 클래스로 이벤트 처리기를 작성 프레임 클래스에 이벤트 처리
yooniron.tistory.com
'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 |