[네트워크 프로그래밍2]스윙 컴포넌트와 이벤트 핸들링 정리
류명운
·2015. 10. 12. 09:04
JComponent, AbstractButton, JTextComponent는 추상클래스
스윙 컴포넌트의 공통 메소드: JComponent의 메소드
1) 컴포넌트의 모양과 관련된 메소드 void setForeground(Color) 전경색 설정 void setBackground(Color) 배경색 설정 void setOpque(boolean) 불투명성설정 void setFont(Font) 폰트 설정 Font getFont() 폰트 리턴 |
2) 컴포넌트의 상태와 관련된 메소드 void setEnabled(boolean) 컴포넌트 활성화/비활성화 void setVisible(boolean) 컴포넌트 보이기/숨기기 boolean isVisible() 컴포넌트의 보이는 상태 리턴 |
3) 컴포넌트의 위치와 크기에 관련된 메소드 int getWidth() 폭 리턴 int getHeight() 높이 리턴 int getX() x좌표 리턴 int getY() y좌표 리턴 Point getLocationOnScreen() 스크린 좌표상에서의 컴포넌트 좌표 void setLocation(int, int) 위치 지정 void setSize(int int) 크기 지정 |
4) 컨테이너를 위한 메소드 Component add(Component) 자식 컴포넌트 추가 void remove(Component) 자식 컴포넌트 제거 void removeAll() 모든 자식 컴포넌트 제거 Component[] getComponenets() 자식 컴포넌트 리스트 리턴 Container getParent() 부모 컨테이너 리턴 Container geTopLevelAncestor() 최상위 부모 컨테이너 리턴 |
JLabel, 레이블 컴포넌트
: 텍스트나 이미지를 컴포넌트화 하기 위한 목적
: JLabel() //텍스트나 이미지 정보가 없는 빈 레이블 컴포넌트 생성
: JLabel(Icon image) //이미지만을 가진 레이블 컴포넌트 생성
: JLabel(String text) //텍스트만을 가진 레이블 컴포넌트 생성
: JLabel(String text, Icon image, int hAlignment) //텍스트와 이미지, 수평 정렬 값을 가진 레이블 컴포넌트 생성
* 수평정렬 값(hAlignment): SwingConstants.LEFT, CENTER, RIGHT, LEADING or TRAILING
이미지를 가진 레이블 컴포넌트 생성
: ImageIcon 클래스를 사용하여 출력(png, gif, jpg)
ImageIcon Image = new ImageIcon("image/test.jpg"); JLabel img = new JLabel(Image); |
수평정렬 값을 가진 레이블 컴포넌트 생성
* 텍스트 이미지 모두 출력하고자 하는 경우 수평정렬 값을 지정하여야 함
JLabel test = new JLabel("test", Image, SwingConstants.CENTER); |
JButton, 버튼 컴포넌트
: 버튼은 클릭될 때 Action 이벤트를 발생시킴
버튼 컴포넌트 생성자 JButton() - 텍스트나 이미지 아이콘을 가지지 않은 디폴트 버튼 생성 JButton(Icon icon) - 이미지 아이콘을 가진 버튼 생성 JButton(String text) - 텍스트 만을 가진 버튼 생성 JButton(String text, Icon icon) - 텍스트와 이미지 아이콘을 모두 가진 버튼 생성 -> JButton jb = new JButton("hello"); |
버튼 컴포넌트 메소드 버튼의 보통 상태 때 출력되는 이미지: normalIcon 버튼 위에 마우스가 올라갈 때 출력되는 이미지: JButton.setRolloverIcon(Icon) 마우스 버튼을 누른 상태 때 출력되는 이미지 : JButton.setPressedIcon(Icon) |
레이블과 버튼의 정렬(Alignment)
- 수평 정렬: 컴포넌트 영역 내의 이미지와 텍스트의 수평상의 위치 결정
* void setHorizontalAlignment(int align)
- 수직 정렬: 컴포넌트 영역 내의 콘텐츠의 수직상의 위치
* void setVerticalAlignment(int align)
JCheckBox, 체크박스 컴포넌트
: 선택(selected)과 비선택(deselected)의 두 상태만을 가지는 버튼
* 생성자 JCheckBox() // 텍스트와 이미지가 없는 토글 버튼 생성 JCheckBox(Icon icon) // 이미지만 가진 토글 버튼 생성 JCheckBox(Icon icon, boolean selected) // 이미지와 지정된 선택 상태로 생성 JCheckBox(String text) // 텍스트 만을 가진 토글 버튼 JCheckBox(String text, boolean selected) // 텍스트와 지정된 선택 상태로 생성 JCheckBox(String text, Icon icon) // 텍스트와 이미지 둘 다 가진 토글 버튼 생성 JCheckBox(String text, Icon icon, boolean selected) // 텍스트와 이미지를 가지고 지정된 선택 상태로 생성 |
* 메소드 ckb.setBorderPainted(true); //배경이미지설정 ckb.setSelectedIcon(icon); //체크되었을 경우 아이콘 |
Item 이벤트
: 체크 박스가 선택되거나 해제되는 각 경우에 발생하는 이벤트
1) 사용자가 마우스나 키보드로 선택혹은 해제한 경우
2) 프로그램에서 체크박스 컴포넌트를 선태하거나 해제한 경우(setSelected(true))
: ItemListener 인터페이스의 추상 메소드
-> protected void itemStateChanged(ItemEvent e)
: ItemEvent의 주요 메소드
-> int getStateChange(): 체크박스의 상태 리턴(ItemEvent.SELECTED or ItemEvent.DESELECTED)
-> Object getItem(): 이벤트를 발생시킨 아이템 객체
라디오 버튼, JRadioButton
: 여러 버튼으로 그룹을 형성하고, 그룹에 속한 버튼 중 하나만 선택 상태가 되는 버튼
* 다른 버튼이 선택되면 이전에 선택된 버튼은 자동으로 해제됨
* 체크박스와 차이점: 체크박스는 각 체크박스마다 선택 해제가 가능하지만 라디오 버튼은 그룹에 속한 버튼 중 하나만 선택 상태가 됨
: 이미지를 가진 라디오버튼의 생성 및 다루기는 체크박스와 완전히 동일
* 라디오 버튼 생성 과정 1) 버튼 그룹 객체 생성 ->ButtonGroup group = new ButtonGroup(); 2) 라디오버튼 컴포넌트 생성 ->JRadioButton apple = new JRadioButton("사과"); ->JRadioButton pear = new JRadioButton("배"); ->JRadioButton cherry = new JRadioButton("체리); 3) 라디오버튼을 버튼 그룹에 삽입 ->group.add(apple); ->group.add(pear); ->group.add(cherry); 4) 라디오버튼을 컨테이너에 삽입 ->container.add(apple); ->container.add(pear); ->container.add(cherry); |
(실습)ItemEvent를 활용하여 사진 보이기
|
JTextField, 텍스트필드 컴포넌트
: 한 줄 짜리 텍스트(문자열) 입력 창을 구현한 컴포넌트
: 텍스트 입력 도중 <Enter> 키가 입력되면 Action 이벤트 발생
JTextField() //빈 텍스트 입력 창 생성 JTextField(int coolumns) //입력 창의 크기가 columns 개, 빈 텍스트 입력 창 생성 JTextField(String text) // text 문자열로 초기화된 텍스트 입력 창 생성 JTextField(String text, int columns) |
*주요메소드 JTextField.setEditable(false); //텍스트의 편집을 불가능하게 하기 JTextField.setText("hello") //텍스트 창에 강제로 문자열 출력하기 JTextField.setFont(new Font("고딕체", Font.ITALIC, 20); //텍스트 폰트 지정하기 JTextField.select(0, 5); //0번 문자에서 5번째까지 문자열 선택 |
JTextArea, 텍스트영역 컴포넌트
: 여러 줄을 입력할 수 있는 텍스트 입력 창
* 스크롤바를 지원하지 않는다. (but, JScrollPane 객체에 삽입하는 방식으로 지원)
|
|
JList, 리스트 컴포넌트
: 사용자에게 하나 이상의 객체 리스트를 보여주고 하나 혹은 다수의 아이템을 선택할 수 있게 하는 컴포넌트
: JComboBox와 기본적으로 같은 기능
* Jlist는 스크롤링을 지원하지 않음(JScrollPane에 JList를 삽입하여 가능)
JList(Vector listData) : vector 타입의 listData를 불러들어 리스트 아이템을 공급받음 JList(Object [] listData) : 배열 listData로부터 리스트 아이템을 공급받는 리스트 컴포넌트 생성 * 배열을 수정하여도 JList의 값은 변경안됨 * setListData() 메소드를 호출하여 아이템을 동적으로 삽입할 수 있음 |
|
JComboBox, 콤보박스 컴포넌트
: 텍스트 필드와 버튼, 그리고 드롭다운 리스트로 구성
JComboBox(ComboBoxModel model) : model에 의해 아이템을 공급받는 콤보박스 컴포넌트 생성 JComboBox(Object [] items) : items 배열로부터 아이템을 공급받는 콤보박스 컴포넌트 생성 JComboBox(Vector items) : items 벡트로부터 아이템을 공급받는 콤보박스 컴포넌트 생성 |
* addItem() 메소드를 호출하여 아이템을 동적으로 삽입할 수 있음
JComboBox와 Action, Item 이벤트
: 아이템 선택시 ActionListener, ItemListener 이벤트 발생
* 새로운 아이템이 선택되면 2번의 Item 이벤트 발생(선택/해제)
* 사용자가 아이템을 선택하지만 선택된 아이템이 변경되지 않을 경우에는 Item 이벤트가 발생하지 않음
* int JComboBox.getSelectedIndex() / 현재 선택된 아이템 알아내기
* Object JComboBox.getSelectedItem() / 선택 상태인 아이템 객체 레퍼런스 리턴
JSlider, 슬라이더란?
: 일정 범위 내에서 마우스로 움직이션서 값을 선택하는 컴포넌트
: orieantation(방향) = VERTICAL(수직), HORIZONTAL(수평)
JSlider(int orientation) // 방향: JSlider.HORIZONTAL, JSlider.VERTICAL JSlider(int orientation, int min, max, int val) // 방향, 최소, 최대, 현재값 |
* 메소드 void setOrientation(JSlider.HORIZONTAL) // 슬라이더 방향 설정 void setMaximum(int max) // 최대값 설정 void setMinimum(int min) // 최소값 설정 void setPaintLabels(boolean b) // label 보이기/감추기 void setPaintTicks(boolean b) // tick 보이기/감추기 void setPaintTraks(boolean b) // track 보이기/감추기 void setMajorTickSpacing(int space) // 큰 눈금 간격 지정 void setMinorTickSpacing(int space) // 작은 눈금 간격 지정 void setValue(int n) // 슬라이더 값 제어 void setForeground // 색 값 변경 |
'삶의 늪에 들어 가기 전 > 정리중(미정리)' 카테고리의 다른 글
한국성서대학교 15년도 2학기 8주차 묵상지[한국성서대 묵상지] (0) | 2015.10.13 |
---|---|
[설계패턴]요구 분석 정리 (0) | 2015.10.12 |
[네트워크 프로그래밍2]이벤트 처리 정리 (0) | 2015.10.11 |
[네트워크 프로그래밍2]자바의 GUI, AWT와 SWING 정리 (0) | 2015.10.11 |
[설계패턴]프로젝트 계획 정리 (1) | 2015.10.10 |