Project

241121 ~ 22 블로그 프로그램 만들기(2)

suerte10 2024. 11. 21. 18:21

블로그 프로그램 만들기(1)에서 이어짐...

 

1. View 작성

1) resetTableModel() 메서드 작성

  - DAO의 read() 메서드의 리턴값(리스트)의 데이터로 테이블 모델을 새로 만들어주는 역할

2) initializeTable() 메서드에서  resetTableModel() 메서드 호출

 

3) JFrame 객체 BlogCreateFrame 작성

(1) 자바에서 기본으로 작성해주는 main() 메서드를 수정 - 메서드명 : showBlogCreateFrame, 파라미터 삭제

(2) 생성자를 새로 작성(외부에 공개할 필요가 없기 때문에 접근 수식어는 private로 작성)

(3) 자바에서 기본으로 작성해주는 생성자 메서드를 리턴타입 void, 메서드명 initialize로 수정

(4) setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - EXIT_ON_CLOSE에서 DISPOSE_ON_CLOSE로 수정

  * 기본 닫기 버튼(X)의 동작을 현재 창만 닫는 것으로 수정

(5) contentPane의 레이아웃을 BorderLayout으로 변경

(6) contentPane의 center, south에 JPanel 삽입

  * center - mainPanel, south - buttonPanel

(7) mainPanel 작성

  - 레이아웃을 absolute로 변경

  - 제목을 입력할 부분에 JLabel, JTextField 추가

  - 내용을 입력할 부분에 JLabel, JScrollPane 추가

  - JScrollPane의 ViewPort 부분에 JTextArea 추가

  - 작성자를 입력할 부분에 JLabel, JTextField 추가

(8) buttonPanel 작성

  - JButton 2개 추가(저장, 취소)

(9) Component타입 필드 선언

(10) showBlogCreateFrame() 메서드에 Component 타입 파라미터 추가

(11) 생성자에 Component 타입  파라미터 추가 - Component 타입 필드 초기화 내용 추가

(12) initialize() 메서드에 setLocationRelativeTo() 메서드 추가 - 아규먼트로 Component타입 필드 입력

  * 부모 컴포넌트의 가운데 위치에 창을 띄움(부모 컴포넌트가 null이면 화면의 가운데 위치에 창을 띄움)

(13) 취소 버튼에 .addActionListener() 메서드 추가 - 창 닫기 기능 구현(람다 표현식 사용)

(14) BlogDao 타입 필드 선언 - 생성자에서 초기화

=== 2.2) 이후부터 시작 ===

(15) 저장 버튼에 .addActionListener() 메서드 추가 - createNewBlog() 메서드 호출(람다 표현식 사용)

(16) createNewBlog() 메서드 작성

(17) 내부 인터페이스 CreateNotify 작성 - 추상메서드notifyCreateSuccess()를 갖는 인터페이스

  * 내부 인터페이스를 통해 많은 객체에서 호출 가능한 프로그램이 될 수 있음.

(18) CreateNotify 타입 필드 선언

(19) showBlogCreateFrame() 메서드에 CreateNotify 타입 파라미터 추가

(20) 생성자에 CreateNotify 타입 파라미터에 추가 - CreateNotify 타입 필드 초기화 내용 추가

(21) createNewBlog() 메서드에서 새 블로그 작성이 성공했을 경우(result == 1인 경우) CreateNotify 타입 개체의 notifyCreateSuccess() 메서드 호출.

=== 2.8) 이후부터 작성 ===

4) JFrame 객체 BlogDetailsFrame 작성

(1) main(), 생성자 메서드 수정

(2) 내부 인터페이스 UpdateNotify 생성, 추상 메서드 notifyUpdateSuccess() 선언

(3) 필드로 Component 타입, UpdateNotify 타입 객체 선언

(4) 생성자에서 Component 타입, UpdateNotify 타입 객체 초기화

=== 3.7) 이후부터 시작 ===

(5) Integer 타입 필드 선언

(6) 생성자에서 Integer 타입 필드 초기화

(7) 생성자에서 initializeBlog() 메서드 호출

  * ID(PK)로 검색한 블로그 내용을 JTextField와 JTextArea에 씀.

(8) initializeBlog() 메서드 작성

  - DAO에 작성한 read() 메서드를 사용해서 Blog 객체 생성

(9) 업데이트 버튼에 액션 리스너 추가 - UpdateBlog() 메서드 호출

(10) UpdateBlog() 메서드 작성

5) BlogMain 클래스 목록보기 버튼에 액션 리스너 추가 - initializeTable() 메서드 호출

 

 

2. Controller 작성

=== 1.9) 이후부터 시작 ===

1) 새 블로그 작성에 사용할 SQL 문장 작성

2) insert 문장을 실행하는 create() 메서드 작성

=== 3.3) 이후부터 시작 ===

3) 블로그 삭제에 사용할 SQL 문장 작성

4) delete 문장을 실행하는 delete() 메서드 작성

=== 3.5) 이후부터 시작 ===

5) 상세보기에 사용할 SQL 문장 작성

6) read() 메서드 작성(오버로딩)

7) 업데이트에 사용할 SQL 문장 작성

8) update() 메서드 작성

=== 1.5) 이후부터 시작 ===

9) 검색에 사용할 SQL문장 작성

  - 대/소문자 구분없이 제목, 내용, 작성자, 제목or내용에 포함된 문자열로 검색하는 문장(총 4개)

10) read() 메서드 작성(오버로딩) - 파라미터로 int type, String keyword를 가짐

 

 

3. Main 작성

=== 1.16) 이후부터 시작 ===

1) BlogMain 클래스에 BlogCreateFrame 클래스의 내부 인터페이스 CreateNotify 구현(implements)

  * 인터페이스의추상 메서드 notifyCreateSuccess() 구현 - 바디에 initializeTable() 메서드 입력

2) 새 블로그 작성 버튼의 액션 리스너 수정

  * showBlogCreateFrame() 메서드 아규먼트로 BlogMain.this 추가

3) 삭제 버튼에 액션 리스너 추가 - deleteBlog() 메서드 호출

=== 2. 4) 이후부터 시작 ===

5) deleteBlog() 메서드 작성

  * DAO의 delete() 메서드 활용

=== 2.8) 이후부터 시작 ===

6) 새 블로그 작성 버튼에  액션 리스너 추가 - showBlogDetails() 메서드 호출 

7) showBlogDetails() 메서드 작성

  - JTable 클래스의 getSelectedRow() 메서드, DefaultTableModel의 getValueAt() 메서드 활용

  - BlogDetailsFramed의 showBlogDetailsFrame() 메서드로 블로그 상세보기 창을 실행

    * 아규먼트로 frame, Blogthis 클래스 인스턴스, id를 입력

=== 2.10) 이후부터 시작 ===

8) 검색 버튼에 액션 리스너 추가 - searchBlogs() 메서드 호출

9) searchBlogs() 메서드 작성

 

 

 

 

※ CRUD(Create, Read, Update, Delete) : DB 테이블에서 select, insert, update, delete 쿼리를 실행하고 결과를 리턴하는 기능.

 

※ Component -> JFrame, JButton 등 여러가지들이 상속하고 있는 슈퍼클래스

 

※ 파라미터를 넣을 때는 이 메서드를 누가 호출하는 것인지를 생각해야 한다.