Java practice_240126

Choi Suyeon·2024년 1월 26일
0

ButtonGroup

버튼 컴포넌트를 묶을 때 사용.
묶여진 컴포넌트는 여러 개중 하나만 선택될 수 있다.
non-visual component
주로 JRadioButton에서 사용.
(체크박스는 여러개가 선택되어야하기 때문에 그룹으로 묶지 않는다.)

문법

1. 묶여질 컴포넌트 생성.
JRadioButton jrb = new JRadioButton("라벨");

2. ButtonGroup 생성
ButtonGroup bg = new ButtonGroup();

3. 묶여질 컴포넌트를 추가
bg.add(컴포넌트);

Menu

프로그램에서 제공하는 기능들을 묶어서 사용자에게 보여줄 때 사용하는 컴포넌트.
MenuBar, Menu, MenuItem으로 구성.

문법

1. MenuBar 생성
JMenuBar jmb = new JMenuBar();

2. Menu 생성
JMenu jm = new JMenu("라벨");
JMenu jmFile = new JMenu("파일");
JMenu jmEdit = new JMenu("편집");

3. MenuItem 생성
JMenuItem jmi = new JMenuItem("라벨");
JMenuItem jmiNew = new JMenuItem("새파일");
JMenuItem jmiUndo = new JMenuItem("취소");

4. MenuMenuItem 배치
* 메뉴객체명.add(메뉴아이템객체);
jmFile.add(jmiNew); //파일메뉴에 새파일 아이템 배치
jmEdit.add(jmiUndo);//편집메뉴에 취소 아이템 배치

5. MenuItem을 가진 MenuMenuBar에 배치
jmb.add(jmFile);
jmb.add(jmEdit);

6. JMenuBarJFrame에 설정
setJMenuBar( jmb );

Border (컴포넌트 묶기)

컴포넌트들을 묶어서 보여줄 때 사용.
javax.swing.border 패키지에서 관련 클래스들을 제공.
javax.Component의 자식 클래스들은 모두 border를 가질 수 있다.

문법

1. 컴포넌트 생성 - 주로 Container Component에 설정.
JButton jbtn = new JButton();
JPanel jp = new JPanel();
jp.add(jbtn); //컨테이너 컴포넌트에 여러 컴포넌트 배치.

2. Border 생성
TitledBorder tb = new TitledBorder("버튼을 클릭");


3. 컴포넌트에 설정
jp.setBorder(tb);

* Border 생성과 컴포넌트에 설정 한 줄에.
jp.setBorder(new TitledBorder("버튼을 클릭"));

* Border 예시
//보더에 라인그리기
jpLeft.setBorder(new LineBorder(Color.CYAN));
//보더에 제목 넣기
jpRight.setBorder(new TitledBorder("버튼을 클릭")); 


MVC Pattern이 도입된 Component

JComboBox, JList, Jtable이 존재.
데이터 처리업무와 화면 처리 업무, 이벤트 처리업무를 분리하여 제공하는 Component.

  • M(Model) : 데이터를 가지고 관리하는 일. Default대상 Model.(DefaultComboBoxModel)

  • V(Viewer) : 데이터를 가지고 사용자에게 보여주는 일.(JComboBox)

  • C(Controller) : 이벤트 처리에 관련된 일.

장점 :
코드 복잡도가 낮아짐.
유지보수 편함.(프로그램의 생명력이 길어진다.)

단점 :
파일 개수가 많아진다. => 파일 관리 어렵.
값 넘기기와 에러처리가 어렵.
개발속도 느려짐.

S/W의 생명이 끝나는 때 => 더이상 유지보수가 안될 때.
(개발비용이 유지보수 비용보다 적을 때)

H/W => 고장나면,


JComboBox

DefaultComboBoxModel 클래스를 Model객체로 사용하는 View객체

문법

1. Model 생성
DefaultComboBoxModel<E> dcbm = new DefaultComboBoxModel<E>();
- <E><String> 이나 <Integer>.

2. Model과 has a 관계로 View( JComboBox ) 생성
JComboBox<E> jbc = new JComboBox<E>( dcbm );

3. 데이터 추가 => Model객체 사용.
dcbm.addElement(); // dcbm에 값을 넣어야 JComboBox로 데이터가 들어감.

4. View에서 선택한 Element의 값 얻기
	1) View에서 선택한 Element 번호 얻기
	int index = jbc.getSelectedIndex();

	2) Model에서 값 얻기
	변수명 = dcbm.getElementAt( index );

5. View에서 선택된 값 삭제
	1) View에서 선택한 index 얻기
	int index = jbc.getSelectedIndex();

	2) Model에서 삭제
	dcbm.removeElementAt( index );

JList

DefaultListModel 클래스를 Model객체로 사용하는 View객체

문법

1. Model 생성
DefaultListModel<E> dlm = new DefaultListModel<E>();
- <E><String> 이나 <Integer>.

2. Model과 has a 관계로 View( JList ) 생성
JList<E> jl = new JList<E>( dlm );

3. 값 추가 => Model객체 사용.
dlm.addElement(); // dlm에 값을 넣어야 JList로 데이터가 들어감.

4. 리스트에서 선택한 index 값 얻기
	1) 리스트에서 선택한 아이템의 index 얻기
	int index = jl.getSelectedIndex();

	2) Model에서 index의 값 얻기
	변수명 = dlm.getElementAt( index );
    	  //dlm.elementAt( index ); 도 가능. 똑같음.

5. 리스트에서 선택한 index 값 삭제
	1) View에서 선택한 index 얻기
	int index = jl.getSelectedIndex();

	2) Model에서 삭제
	dlm.removeElementAt( index );

JTable

DefaultTableModel 클래스를 Model객체로 사용하는 View객체.
ScrollBar가 없다.( ScrollBar 없이 배치되면 Colum)

문법

1. Model 객체를 생성
String[] columnName = {"컬럼명",,,,};
String[][] data = {
	{,,,},
    {,,,}
};

DefaultTableModel dtm = new DefaultTableModel(data, columnName);

2. Model과 has a 관계로 View( JTable ) 생성
JTable jt = new JTable ( dtm );

3. 행 추가 => Model객체 사용.
String[] rowData = {,,,,};
dtm.addRow( rowData ); //각 열에 방의 값이 할당된다.

4. 리스트에서 선택한 index 값 얻기
	1) 리스트에서 선택한 아이템의 index 얻기
	int index = jl.getSelectedIndex();

	2) Model에서 index의 값 얻기
	변수명 = dlm.getElementAt( index );
    	  //dlm.elementAt( index ); 도 가능. 똑같음.

5. 리스트에서 선택한 index 값 삭제
	1) View에서 선택한 index 얻기
	int index = jl.getSelectedIndex();

	2) Model에서 삭제
	dlm.removeElementAt( index );

0개의 댓글