본문 바로가기

자바공부

자바 Swing JCheckBox, 버튼 컴포넌트, 명품자바프로그래밍11장

728x90
반응형

* JCheckBox는 선택(selected)과 비선택(deselected)의 두가지 상태만 가지는 체크박스 컴포넌트이다.

JCheckBox는 JToggleButton을 상속받아 선택/비선택 두 상태를 오가는 것이므로 일종의 토글버튼이다.

JCheckBox는 체크박스 문자열과 체크박스 이미지로 구성된다.

3개의 체크박스 컴포넌트

생성자: (비선택 상태가 디폴트이다.)

1) JCheckBox()

문자열이나 이미지가 없는 빈 체크박스 생성. 비선택 상태로 초기화

2) JCheckBox(Icon image)

image 이미지만을 가진 체크박스 생성

3) JCheckBox(Icon image, boolean selected)

image 이미지만을 가진 체크박스 생성. selected가 true면 선택 상태로 초기화

4) JCheckBox(String text)

text 문자열만을 가진 체크박스 생성

5) JCheckBox(String text, boolean selected)

text 문자열만을 가진 체크박스 생성. selected가 true면 선택 상태로 초기화

6) JCheckBox(String text, Icon image)

text 문자열과 image 이미지 모두 가진 체크박스 생성

7) JCheckBox(String text, Icon image, boolean selected)

text 문자열과 image 이미지 모두 가진 체크박스 생성. selected가 true면 선택 상태로 초기화

 

* "사과" 문자열을 가진 체크박스 생성 소스

JCheckBox apple = new JCheckBox("사과");

 

* "배" 문자열을 가지고 선택 상태인 체크박스를 생성하는 소스

JCheckBox pear = new JCheckBox("배", true);

 

* 이미지(혹은 이미지아이콘)를 가진 체크박스 컴포넌트는 체크박스 모양이 출력되지 않기 때문에 선택(selected) 상태를 표시하는 별도의 이미지가 주어져야 한다.

선택 상태를 표시하는 별도의 이미지를 달아주기 위해 JCheckBox의 setSelectedIcon(ImageIcon) 메소드를 이용한다.

 

* "체리"문자열과 cherry.jpg 이미지를 가진 체크박스 컴포넌트를 생성하는 소스

ImageIcon cherryIcon = new ImageIcon("images/cherry.jgp");
ImageIcon selectedCherryIcon = new ImageIcon("images/selectedCherry.jpg");

JCheckBox cherry = new JCheckBox("체리", cherryIcon);
cherry.setSelectedIcon(selectedCherryIcon);

 

* 사용자가 마우스나 키보드로 체크박스를 선택/해제할 수 있지만, JCheckBox의 setSelected() 메소드를 호출하여 스윙 응용프로그램에서도 체크박스를 선택/해제할 수 있다.

JCheckBox c = new JCheckBox("사과");
c.setSelected(true); // 선택 상태로 변경, false이면 비선택 상태로 변경

 

* 체크박스 컴포넌트를 선택/해제할 때 발생하는 Item 이벤트와 이를 처리하는 ItemListener

1) ItemListener 인터페이스

체크박스가 선택/해제되는 경우 Item이벤트가 발생한다.

사용자가 마우스나 키보드로 체크 박스를 선택/해제하는 경우와 JCheckBox의 setSelected()메소드를 호출하여 체크박스를 선택/해제하는 경우 모두 Item 이벤트가 발생한다.

Item 이벤트를 처리하는 리스너는 ItemListener 인터페이스이며 하나의 메소드만 가지고 있다.

void itemStateChanged(ItemEvent e)
// 체크박스가 선택/해제되어 상태가 변하는 경우에 호출된다.

Item 이벤트가 발생하여 itemStateChanged() 메소드가 호출되는 시점에서는 이미 체크박스 컴포넌트의 상태는 변경된 후이다.

 

2) ItemEvent

Item이벤트가 발생하면 ItemEvent 객체가 생성되고 itemStateChanged() 메소드에 전달된다.

ItemEvent 객체는 메소드를 통해 체크 상태의 변화와 이벤트 소스를 제공한다.

int getStateChange()
// 체크박스의 상태 변화를 리턴한다.
// 선택된 경우 ItemEvent.SELECTED를, 해제된 경우 ItemEvent.DESELECTED를 리턴한다.
Object getItem()
// 이벤트를 발생시킨 아이템 객체를 리턴한다.
// 체크박스의 경우 이벤트를 발생시킨 JCheckBox 컴포넌트의 레퍼런스를 리턴한다.

 

반응형