Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

오버플로

[Java] MVC Pattern 본문

Java

[Java] MVC Pattern

NACO 2021. 8. 18. 21:22

 MVC Pattern 

- 클래스를 M(Model), V(View), C(Controller)의 역할로 나눠 작성하고 사용하는 개발방식

- 각 파일의 복잡도를 낮춰서 유지보수성을 향상시킨 구조

- 장점 : 유지보수가 편리 (프로그램의 생명이 길어짐)

- 단점 : 파일관리가 어려움, 값 전달 어려움, 에러 처리가 어려움, 개발 속도가 느림

  • M (Mode) : 데이터 처리를 하는 코드 / 데이터를 저장하고 관리하는 일
  • V (View) : 화면디자인을 처리하는 코드 / 데이터를 보여주는 일
  • C (Controller) : 업무처리를 하는 코드

- JList, JComboBox, JTable이 MVC Pattern을 적용하여 만든 컴포넌트

  -> 이 경우에는 컴포넌트에 직접 데이터 추가하는 것이 아니라, MODEL객체에 추가

 

- 사용법)

1. JList

  1) Model 객체 생성 (데이터를 가지고 처리하는 일)

     DefaultListModel<E> dlm = new DefaultListModel<E>(); // 데이터 추가, 삭제 : Model 객체 사용.

     dlm.addElement(값);

     dlm.getElementAt(인덱스); - 권장하는 method (or dlm.elementAt(인덱스) )

     dlm.remove(인덱스); or dlm.removeElementAt(인덱스); or dlm.removeElement(객체)

  2) View 객체 생성 (Model 객체를 할당하여 View 생성)

      JList<E> jl = new JList<E>(dlm) ;// Model과 View의 has a 관계

 

2. JComboBox

  1) Model 객체 생성 (데이터를 가지고 처리하는 일)

     DefaultComboBoxModel<E> dcbm = new DefaultComboBoxModel<E>() // 데이터 추가, 삭제 : Model 객체 사용.

     dcbm.addElement(값);

     dcbm.getElementAt(인덱스);

     dcbm.removeElement(객체); or dcbm.removeElementAt(인덱스);

  2) View 객체 생성 (Model 객체를 할당하여 View 생성)

     JComboBox<E> jc = new JComboBox<E>(dcbm);

 

3. JTable

  - DefaultTableModel은 여러 data가 들어갈 수 있으므로 Generic이 없음

  - JScrollPane을 사용하지 않으면 컬럼명이 제공되지 않음

  1) 객체화 : 컬럼명과 데이터를 넣어서 Model 클래스를 객체화

      String[] columnNames = {“번호”,”이름”,”나이”,”주소};

      String[][] data = { {“1”,”동동”,20”,”서울”}, {“”, “”, “”, “”} }

      DefaultTableModel dtm = new DefaultTableModel(data, columnNames);

  2) View 객체에 데이터를 가진 객체(Model)를 생성

      JTable jt = new Jtable ( dtm ); // has a 관계

  3) JScrollPane을 생성하여 배치

      JScrollPane jsp = new  JScrollPane(jt); 

      add(jsp);


# 오늘의 코딩 #

- JTable을 사용해보자!

package test;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 * JTable의 사용
 * @author user
 */
@SuppressWarnings("serial")
public class UseJTable extends JFrame {

	public UseJTable() {
		super("MVC Pattern을 도입한 클래스");
		
		//1. Model 객체 생성
		String[] columnNames = {"번호","이름","나이","주소"};
		String[][] data = {
				{"1","동","26","서울시 강남구"},
				{"2","서","25","서울시 송파구"},
				{"3","남","24","서울시 광진구"},
				{"4","북","26","수원시 영통구"},
		};
		DefaultTableModel dtm = new DefaultTableModel(data,columnNames);
		
		//2. 데이터(Model)를 넣어서 JTable(View)을 생성
		JTable jt = new JTable(dtm);
		JScrollPane jsp = new JScrollPane(jt);

        //3. 배치
		add("Center",jsp);// 스크롤페인 안 넣으면 컬럼명이 안 나옴
		
		//4. 크기설정
		setBounds(100,150,400, 300);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}//UseJTable
	
	public static void main(String[] args) {
		new UseJTable();
	}//main

}//class

 

- 얜 Model과 View객체에 따라 하는 일이 다르다!

 

# 출력 결과 #

 

 

'Java' 카테고리의 다른 글

[Java] Adapter Class  (0) 2021.08.20
[Java] Menu / Event Handling  (0) 2021.08.19
[Java] Layout Manager (배치관리자)  (0) 2021.08.17
[Java] JFC / Swing / Component  (0) 2021.08.15
[Java] Stack / autoboxing / unboxing  (0) 2021.08.12
Comments