[네트워크 프로그래밍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) - 텍스트와 이미지 아이콘을 모두 가진 버튼 생성
 ex) 'hello' 문자열을 가진 버튼 컴포넌트 생성

 -> 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 // 색 값 변경

 

 

 

 

 

 

반응형