본문 바로가기

개념 정리/Java

[JAVA] 스윙 컴포넌트(JLabel, JButton, JCheckBox, JRadioButton, JTextField, JList, JComboBox)


  1. 스윙 컴포넌트 메소드
  2. JLabel : 레이블
  3. JButton : 버튼
  4. JCheckBox : 체크박스
  5. JRadioButton : 라디오버튼
  6. JTextField : 텍스트필드
  7. JTextArea : 텍스트영역
  8. JList<E> : 리스트 컴포넌트
  9. JComboBox<E> : 콤보박스

1. 스윙 컴포넌트 기본 메소드

[스윙 컴포넌트 메소드]

 

 

· 배경색, 글자색, 폰트

c.setBackground(Color.YELLOW);	// 배경색 설정
c.setForeground(Color.MAGENTA);	// 글자색 설정
c.setFont(new Font("Arial", Font.ITALIC, 20));	// 글꼴 Arial체, 이탤릭, 20픽셀

 

· 위치, 크기

배치관리자 없는 컨테이너에서만 작동

c.setLocation(100,200);	// (100,200) 위치로 이동
c.setSize(100,100);	// 100x100크기로 설정

// 위치, 크기 알아내기
c.getX(); c.getY(); c.getWidth(); c.getHeight();

 

· 활성화/비활성화, 보이기/숨기기

c.setEnabled(false);	// 컴포넌트 비활성화(눌러도 작동 안하게 함)
c.setVisible(false);	// 컴포넌트 숨기기(화면에 보이지 않게 함)

 

· 부모컨테이너 찾기

c.getParent();	// 부모 컨테이너 알아내기
c.getTopLevelAncester();	// 최상위 컨테이너 알아내기

// 컨테이너 c에서 자식컴포넌트 child 삭제
c.remove(child);	
c.revalidate();	// 컨테이너 재배치
c.repaint();	// 컴포넌트 다시그리기

2. JLabel. 레이블

문자열이나 이미지를 스크린에 출력

 

[생성자]

JLabel()
JLable(Icon image)	// 이미지 레이블
JLable(String text)	// 문자열 레이블
JLabel(String text, Icon image, int hAlign)	// 문자열과 이미지 모두 가진 레이블
// hAlign: 수평정렬. SwingConstants.LEFT / SwingConstants.RIGHT / SwingConstants. CENTER

 

[레이블 생성 예시]

ImageIcon img = new ImageIcon("images/sunset.jpg");	// 이미지는 프로젝트 폴더 아래 images폴더에
JLabel label = new JLabel("안녕", img, SwingConstants.CENTER);

3. JButton. 버튼

버튼 선택 시 Action 이벤트 발생

 

[생성자]

JButton()
JButton(Icon image)	// 이미지 버튼
JButton(String text)	// 문자열 버튼
JButton(String text, Icon image)	// 문자열과 이미지 가진 버튼

 

[버튼 상태에 따른 이미지 버튼]

· setIcon(Icon image) : 디폴트 이미지. 버튼이 보통 상태일 때 (normalIcon)

· setRolloverIcon(Icon image) : 버튼 위에 마우스가 올라갈 때 (rolloverIcon)

· setPressedIcon(Icon image) : 버튼이 눌러져 있는 동안 (pressedIcon)

JButton button = new JButton("버튼", normal);	// normalIcon
button.setRolloverIcon(rollover);	// rolloverIcon
button.setPressedIcon(pressed);		//pressdIcon

button.setIcon(new ImageIcon("images/newIcon.gif"));	// normalIcon 변경

 

[버튼 내 문자열과 이미지 정렬]

btn.setHorizontalAlignment(int align);	// 수평정렬
// SwingConstants.LEFT / SwingConstants.CENTER / SwingConstants.RIGHT

btn.setVerticalAlignment(int align);	// 수직정렬
// SwingConstants.TOP / SwingConstants.CENTER / SwingConstants.BOTTOM

4. JCheckBox. 체크박스

선택상태 변할 때 Item 이벤트 발생

 

[생성자]

JCheckBox()
JCheckBox(String text, boolean selected)	// 문자열 체크박스
JCheckBox(Icon image, boolean selected)		// 이미지 체크박스
JCheckBox(String text, Icon image, boolean selected)	// 문자열과 이미지 가진 체크박스
// selected : true이면 선택상태. 디폴트는 해제상태.(생략가능)

 

[체크박스 생성 예시]

* 이미지 체크박스는 체크박스모양 대신 이미지 사용

JCheckBox chk = new JCheckBox("체크");	// 문자열 체크박스

// 이미지 체크박스
JCheckBox imgchk = new JCheckBox("이미지체크", img1);	// 해제 상태 이미지 체크박스
imgchk.setSelectedIcon(img2);	// 선택 상태 이미지 등록
cherry.setBorderPainted(true);	// 체크 상태 외곽선 보이게 하기

 

[체크박스 Item 이벤트 처리]

1. ItemListener 구현

class MyListener implements ItemListener {		// Item 리스너
    public void itemStateChanged(ItemEvent e) {...}	// 체크박스 상태 변화 시 호출되는 메소드
}

 

* Item 이벤트 발생 시 ItemEvent 객체 생성 -> itemStateChanged() 인자로 전달.

↓ 체크 상태 변화, 소스 컴포넌트 알아내는 ItemEvent 객체의 메소드

int getStateChange()	// 리턴값 : ItemEvent.SELECTED / ItemEvent.DESELECTED
Object getItem()	// 이벤트 발생시킨 아이템 객체 레퍼런스 리턴

// itemStateChanged() 메소드 내에서 e.getItem() <- 이런식으로 쓰임

 

2. 체크박스 컴포넌트에 리스너 달기

checkbox.addItemListener(new MyListener());

5. JRadioButton. 라디오버튼

여러개가 하나의 버튼 그룹 형성.

생성, 메소드, 이벤트 처리는 체크박스와 동일.

선택상태 변경시 2개의 Item 이벤트 발생(해제1 + 선택1이므로..)

 

[생성자]

JRadioButton()
JRadioButton(String text, boolean selected)	// 문자열 라디오버튼
JRadioButton(Icon image, boolean selected)		// 이미지 라디오버튼
JRadioButton(String text, Icon image, boolean selected)	// 문자열과 이미지 가진 라디오버튼

 

[버튼 그룹과 라디오버튼 생성]

1. 버튼 그룹 객체 생성

2. 라디오버튼 컴포넌트 생성

3. 라디오버튼을 버튼 그룹에 add

4. 라디오버튼을 컨테이너에 add

// 1. 버튼 그룹 객체 생성
ButtonGroup group = new ButtonGroup();

// 2. 라디오버튼 컴포넌트
JRadioButton rbtn1 = new JRadioButton("버튼1");
JRadioButton rbtn2 = new JRadioButton("버튼2");
JRadioButton rbtn3 = new JRadioButton("버튼3", img1);

// 3. 라디오버튼을 그룹에 add
group.add(rbtn1);
group.add(rbtn2);
group.add(rbtn3);

// 4. 라디오버튼을 컨테이너에 add
container.add(rbtn1);
container.add(rbtn2);
container.add(rbtn3);

6. JTextField. 텍스트필드

한 줄의 문자열을 입력받는 창.

Enter 키 입력시 Action 이벤트 발생

 

[생성자]

JTextField()
JTextField(int cols)	// 창의 가로 크기가 cols인 텍스트필드
JTextField(String text)	// text문자열로 초기화된 텍스트필드
JTextField(String text, int cols)	// 문자열로 초기화, 입력 창의 문자 개수 cols

// cols : 창의 가로 크기가 cols개 문자 크기. (입력 가능한 문자 개수가 cols개 라는 말이 아님!)

 

[텍스트필드 생성 예시]

JTextField tf1 = new JTextField(10);
JTextField tf2 = new JTextField("텍스트",20);

// c.add(new JTextField(10)); 처럼 한번에 생성+삽입해도 됨

 

[텍스트필드 주요 메소드]

· setEdittable() : 사용자가 문자열을 입력/수정할 수 없게 함

· setText() : 입력 창에 있는 텍스트를 수정해서 출력

· setFont() : 입력창 문자열 폰트지정

tf.setEditable(false);	// 입력창에 입력/수정 불가
tf.setText("Hello");	// "hello"를 텍스트필드 창에 출력
tf.setFont(new Font("고딕체", Font.ITALIC, 20));	// 텍스트필드 입력창 폰트 지정

7. JTextArea. 텍스트영역

여러줄의 문자열 입력받을 수 있는 창.

스크롤바 필요하면 JScrollPane에 삽입해야 함.

 

[생성자]

JTextArea()
JTextArea(int rows, int cols)	// 입력창이 rows x cols개 문자 크기
JTextArea(String text)		// text문자열로 초기화된 텍스트영역
JTextArea(String text, int rows, int cols)

 

[텍스트영역 생성 예시]

스크롤바가 나타나도록 JScrollPane에 삽입

container.add(new JScrollPane(new JTextArea("텍스트",7,20)));

8. JList<E>. 리스트 컴포넌트

- 여러개의 아이템을 리스트 형식으로 보여주고 선택하도록 함.

- 이미지 아이템 가능, 여러개 선택 가능

- <E>는 리스트에 삽입되는 아이템의 타입. 리스트 생성시 타입 구체화해야 함

- 스크롤바 필요하면 JScrollPane에 삽입해야 함.

 

[생성자]

JList<E>()
JList<E>(Vector listData)	// 벡터로부터 아이템 공급받는 리스트
JList<E>(Object [] listData)	// 배열로부터 아이템 공급받는 리스트

 

[리스트 컴포넌트 생성 예시]

JList<String> lst = new JList<String>(arr);	// arr에는 문자열 배열

JScrollPane pane = new JScrollPane(lst);	// 스크롤 가능하게 함
container.add(pane);

 

[리스트 아이템 변경]

벡터나 배열을 수정해도 이미 생성된 리스트 변경 불가

생성된 리스트를 수정하려면 setListData() 메소드 호출해 리스트에 수정된 벡터나 배열 새로 달아줌

JList<String> lst = new JList<String>(v);	// v는 벡터

v.add("하늘");
lst.setListData(v);	// 수정된 벡터 새로 달아줌

 9. JComboBox<E>. 콤보박스

- 텍스트필드, 버튼, 드롭다운 리스트로 구성

- 아이템 선택 시 Action이벤트, Item 이벤트 동시 발생.

 

[생성자]

JComboBox<E>()
JComboBox<E>(Vector listData)	// 벡터로부터 아이템 공급받는 콤보박스
JComboBox<E>(Object [] listData)	// 배열로부터 아이템 공급받는 콤보박스

 

[콤보박스 아이템 추가/삭제]

· addItem()

: 콤보박스에 아이템 추가

· removeItem(Object obj),  removeItemAt(int index),  removeAllItems()

: 콤보박스 아이템 삭제

JComboBox<String> cmb = new JComboBox<String>(arr);	// arr은 배열. 콤보박스 생성

cmb.addItem("추가아이템");	// 아이템 추가

cmb.removeItemAt(2);	// 2번 인덱스의 아이템 삭제

 

[콤보박스 이벤트]

아이템 선택을 일종의 명령으로 처리하려면 Action이벤트,

아이템 선택/해제가 목적이면 Item 이벤트 처리하기.

 

↓ 현제 선택된 아이템 알아내는 메소드

int getSelectedIndex()	// 선택상태인 아이템의 인덱스 번호 리턴
Object getSelectedItem()	// 선택 상태인 아이템객체의 레퍼런스 리턴

 

 

명품 JAVA Programming 참고