[Java] 2020.11.20. day_23 Component종류
2020. 11. 20. 17:21ㆍWeb_Back-end/Java SE
○ Component 종류
Component 종류 | |
Menu | 고정된 위치에서 사용자에게 서비스를 제공할 때 MenuBar, Menu, MenuItem 으로 구성 |
사용법) 1 JMenuBar 생성 JMenuBar jmb = new JMenuBar(); 2 Menu생성 Menu m = new Menu("대표이름"); 3 MenuItem 생성 MenuItem mi = new MenuItem("서비스할 이름"); 4 생성된 MenuItem을 Menu배치 m.add( 메뉴아이템 객체 ); m.add( 다른 메뉴객체 ); //메뉴아이템에서 하위메뉴를 제공 5 메뉴아이템을 가진 메뉴가 MenuBar에 배치 mb.add(메뉴객체); 6 MenuBar를 Window Component에 배치 |
|
MVC Pattern을 도입하여 제작된 컴포넌트들 JCombo, JList, JTable |
|
MVC | (Model, View, Controller) Model : 데이터를 관리하고 처리하는 일 View : 데이터를 보여주는 일 Controller : 이벤트처리, 업무로직 구현하는 일 하나의 서비스를 분해하여 구현하는 개발방식(Design Pattern) 생명주기가 서로 다른 작업을 분해하여 구현하는 개발방식 디자인 : 디자이너 업무로직 : 개발자 데이터처리 : DBA <Model1 방식의 개발> 서로다른 생명주기를 가진 업무가 하나의 파일에 존재하면 -파일의 복잡도 상승 -파일을 수정할 때 다른 코드를 훼손할 가능성 -업무분장이 애매해진다 -코드수정의 시간이 증가 +제작이 쉽다 +파일관리의 용이성 +값 사용이 편하다 +에러처리가 편하다 <Model1방식의 개발 , MVC Pattern2> 파일 하나에서 서로다른 생명주기를 가진 코드를 분리한 것 -파일이 많이 생성되므로 파일관리의 복잡도 상승 -값을 보내고 받기 어렵다 +업무를 구분하여 작성하기 좋다 (유지보수의 편의성 향상 => 프로그램의 생명이 길어진다) +소스코드의 복잡도가 낮아진다 |
JComboBox | 사용법) 1 데이터를 가진 Model 클래스 생성 DefaultComboBoxModel<E> dcbm = new DefaultComboBoxModel<E>(); 2 Model 객체에 데이터 추가 dcbm.addElement("값"); 3 데이터를 보여줄 View클래스를 생성 JComboBox jcb = new JComboBox( dcbm ); //has a 관계 |
JList | 사용법) 1 데이터를 가진 Model 클래스 생성 DefaultListModel<E> dlm = new DefaultListModel<E>(); 2 Model 객체에 데이터 추가 dlm.addElement("값"); 3 데이터를 보여줄 View클래스를 생성 JList jl = new JList( dlm ); //has a 관계 4 ScrollBar 설정 JScrollPane jsp = new JScrollPane( jl ); |
TitledBorder | 테두리를 가진 제목 설정하는 Component 대부분의 Component는 border를 가질 수 있다 사용법) 1 생성 TitleBorder tb = new TitleBorder("타이틀"); 2 Border가 필요한 Component에 Border를 설정 JButton jbtn = new JButton("button"); jbtn.setBorder( tb ); |
JTable | 데이터를 시안성을 높여서 보여줄 때 사용법) 1 데이터를 가진 Model 클래스 생성 javax.swing.table 패키지에서 DefaultTableModel 클래스를 제공 - 컬럼명을 일차원 배열로 생성 String[] columnNames = {"컬럼명"," "," ",,,,}; - 데이터는 이차원 배열로 생성 String[][] rowData = { {"값","값",,,,}, {"값","값",,,,}, {"값","값",,,,} ,,,,}; DefaultTableModel dtm = new DefaultTableModel(rowData, columnNames); 2 Model 객체에 데이터 추가 2-1 배열 String[] data = {"값",,,}; dtm.addRow( data ); 2-2 Vector : is a 관계의 객체화로 객체를 생성하지 않는다 Vector<E> vec = new Vector<E>(); vec.add("값"); //컬럼의 개수만큼 add를 사용하여 값을 추가 dtm.addRow( vec ); 3 데이터를 보여줄 View클래스를 생성 JTable jt = new JTable( dtm ); 4 JTable은 ScrollBar를 가지고있지 않다 JScrollPane jsp = new JScrollPane( jt ); -JScrollPane을 사용하지 않고 JTable을 직접 배치하면 Table 의 header가 보여지지 않는다 |