- 스윙 컴포넌트 메소드
- JLabel : 레이블
- JButton : 버튼
- JCheckBox : 체크박스
- JRadioButton : 라디오버튼
- JTextField : 텍스트필드
- JTextArea : 텍스트영역
- JList<E> : 리스트 컴포넌트
- 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 참고
'개념 정리 > Java' 카테고리의 다른 글
[JAVA] 스레드 (1) | 2023.10.31 |
---|---|
[JAVA] 그래픽 (1) | 2023.10.26 |
[JAVA] 이벤트, 리스너, key 이벤트, 마우스 이벤트 (0) | 2023.10.25 |
[JAVA] GUI, 컨테이너, 컴포넌트, 스윙, 배치관리자 (0) | 2023.10.23 |
[JAVA] 파일 읽기, 쓰기, File 클래스 (0) | 2023.10.22 |