Language/JAVA

[JAVA] 메모장(notepad) 만들기 - ActionListener 객체의 속성과 동작 구현 ③ | Yoon's Dev

Yooniron 2021. 5. 29. 20:44

메모장(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