ch12. 스윙 컴포넌트들

728x90

🟩 ch12. 스윙 컴포넌트들

ch12. 스윙 컴포넌트들

12-1. 스윙 컴포넌트에 이미지 표시

  • 거의 모든 스윙 컴포넌트에는 이미지를 추가로 표시 O

[스윙 컴포넌트에 이미지 표시] : ImageIcon 클래스 사용

1) ImageIcon 클래스의 객체 생성

  • ImageIcon은 JPEG, GIF, PNG 파일을 읽을 수 있다.
  • 경로지정 시, 절대 경로 or 상대경로
ImageIcon image = new ImageIcon(“image.gif”);
  • 경로지정 X -> 자동으로 프로젝트 폴더 이미지 파일 불러옴

2) setIcon() 메소드 사용 -> 원하는 컴포넌트에 이미지 지정

JLabel label = new JLabel(“이미지 레이블”);

label.setIcon(image);

12-2. 체크 박스

[체크박스]: 중복 체크 허용 O

[체크박스 생성] : JCheckBox 클래스 사용

1) 체크되지 않은 체크박스 생성

두 번째 매개변수에 초기값 지정 X -> 체크안된 체크박스를 생성

JCheckBox onion = new JCheckBox(“양파”);

2) 체크된 체크박스 생성

두 번째 매개변수 초기값 지정 O

JCheckBox onion = new JCheckBox(“양파”, true);

3) 강제로 체크 초기 상태 설정

JCheckBox onion = new JCheckBox(“양파”);

onion.setSelected(true);

4) 사용자가 체크박스 클릭 시 -> ItemEvent 발생 -> ItemListenet 구현해서 이벤트 처리

12-3. 라디오 버튼

[라디오 버튼] : (중복 체크 X)

하나의 그룹 안에서 한 개의 버튼만 선택 가능

하나의 라디오 버튼 선택 시, 다른 버튼 자동 선택 해제처리

[라디오 버튼 생성] : JRadioButton클래스, ButtonGroup클래스 사용

1) JRadioButton 클래스의 라디오 버튼 객체 생성

JRadioButton radio1 = new JRadioButton(“Small”);

2) ButtonGroup 버튼 그룹 객체 생성

→ 라디오버튼을 하나의 그룹으로 그룹핑하여 한 그룹당 하나의 라디오 버튼만 선택될 수 O

ButtonGroup group = new ButtonGroup();

3) 그룹 객체에 라디오 버튼 그룹핑

group.add(radio1);

group.add(radio2);

[관련 메소드]

isSelected() 메소드 : 코드에서 라디오 버튼 눌려졌는지 여부를 검사

doClick() 메소드 :강제로 어떤 버튼 선택

[경계 만들기]

  • 경계(border) : 시각적으로 컴포넌트들을 그룹핑하는 장식적 요소
  • 일반적으로 체크박스 or 라디오박스들을 시각적으로 그룹핑할 때 사용 多

1) 경계 객체 생성

  • BorderFactory클래스의 정적 메소드 사용하여 바로 경계 객체에 연결
Border border = BorderFactory.createTitleBorder(“크기”);

2) 패널에 경계를 설정

panel.setBorder(border);

12-4. 텍스트 필드

[텍스트 필드]

  • 입력 가능한 한 줄의 텍스트 필드 만들 때 사용
  • 편집 가능 or 불가능 설정 가능
  • 표시전용 : 편집 불가능 텍스트
  • 텍스트 필드에 텍스트 입력 후 Enter 입력하면 이벤트 발생함

[JTextField 클래스]

  • 두 개의 자식 클래스 갖는다.

1) JPasswordField 클래스

  • 패스워드 입력
  • 사용자 입력문자를 보여주지 않는 컴포넌트

2) JFormattedTextField 클래스

  • 사용자 입력가능한 문자 집합을 제한

[텍스트 필드 생성]

1) (글자 수) 준 뒤 생성

JTextField text = new JTextField(30);

2) (초기화 문자열) 준 뒤 생성

JTextField text = new JTextField(“초기화 문자열”);

[관련 메소드]

1) getText() 메소드 : 텍스트 필드 속 문자열 반환

2) setText() 메소드 : 문자열을 텍스트 필드 속으로 세팅

3) selectAll() 메소드 : 텍스트 필드 속 모든 문자열 선택

4) setEditable(T / F) 메소드 : 텍스트 필드 편집 가능 여부 선택

5) requestFocus() 메소드 : 사용자 입력받는 텍스트 필드에 ‘키보드 포커스’ 호출

[패스워드 필드 추가 메소드]

1) void setEchoChar(char c) : 화면에 대신 보일 문자 지정

2) char getEchoChar() : 화면에 대신 보일 문자 반환

3) char[] getPassword(): 사용자 입력한 암호를 문자 배열 형태로 반환

12-5. 텍스트 영역

[텍스트 영역]

  • 입력 가능한 여러 줄의 텍스트 삽입 시 사용
  • 생성자의 매개변수에 (텍스트 영역의 행, 열)
  • 기본 텍스트 영역에는 자동 스크롤바 붙지 않음 (따로 스크롤 패인 생성하여 연결 필요)
  • 기본적으로 편집 가능 상태

[텍스트 영역 객체 생성]

JTextArea text = new JTextArea(10,30);

[관련 메소드]

1) getText() 메소드 : 텍스트 영역 속 문자열 반환

2) setText() 메소드 : 문자열을 텍스트 영역 속에 세팅

3) setEditable(false) : 편집 불가능 설정

4) append(“ 원하는 문자열”) : 텍스트 영역에 텍스트 추가

[스크롤 패인]

  • 컴포넌트에 스크롤 기능 제공
  • 제한된 화면 크기보다 더 큰 컴포넌트 표시하길 원할 때 스크롤 기능 필요
  • 스크롤 패인에 원하는 컴포넌트를 집어넣으면 스크롤 기능 추가O
  • 스크롤 기능 추가하면 스크롤 바가 나타난다.

[스크롤 패인 생성]

JTextArea text = new JTextArea(10, 30); //텍스트 영역 생성
JScrollPane scrollpane = new JScrollPane( text ); //스크롤 패인 생성

add(scrollpane, BorderLayout.CENTER);

12-6. 콤보 박스

[콤보 박스]

  • 여러 항목 중에서 하나를 선택하는 데 사용
  • 텍스트 필드와 리스트의 결합

[콤보 박스 생성]

1) 비어있는 콤보박스 객체 생성 후 -> addItem() 메소드 사용해 항목 추가

JComboBox combo = new JComboBox();

combo.addItem(“개”);

combo.addItem(“사자”);

2) 빈 콤보박스 객체 생성 시, 문자열 배열 전달하여 항목 추가

String[] names = {“개”, “사자”};

JComboBox combo = new JComboBox( names );

[관련 메소드]

1) removeItemAt() 메소드: 제거할 콤보박스 항목 번호 아는 경우 사용

2) removeItex() 메소드 : 제거할 콤보박스 객체 아는 경우 사용

3) getSeletedItem() 메소드 : 콤보박스에서 사용자 선택 항목 가져옴

  • 기본적으로 Object 타입을 반환하므로 형변환하여 사용할 것

12-7. 슬라이더

[슬라이더]

: 사용자가 특정한 범위 안에서 하나의 값을 선택할 수 있는 컴포넌트

: 사용자로부터 일정 범위 안의 수치값 입력 받을 때 사용 多

[슬라이더 객체 생성] : JSlider 클래스

1) 생성자에 매개변수 X

  • 디폴트로 0~100 범위의 슬라이더 생성
JSlider slider = new JSlider();

2) 생성자에 ( a, b, 초기값) 지정 시,

a~b 범위의 슬라이더 생성 후 초기값 처리된 슬라이더 생성됨

JSlider slider = new JSlider(0, 100, 50);

[관련 메소드]

1) slider.setMajorTickSpacing(10); // 큰 눈금 간격 지정

2) slider.setMinorTickSpacing(1); //작은 눈금 간격 지정

3) slider.setPaintTicks(true); //슬라이더 눈금 표시

4) slider.setPaintLabels(true); //슬라이더 값을 레이블로 표시

5) slider.addChangeListener(this); //슬라이더에 Change이벤트 리스너 등록

  • getValue() 메소드 : 슬라이더에 연결된 이벤트 리스너 안에서,슬라이더의 값을 읽기 위해 사용
public void stateChanged (e) { // Change이벤트리스너 속 메소드 재정의

JSlider sourse = (JSlider) e.getSourse();

if (!source.getValueIsAdjusting() ) {

int value = (int) source.getValue();

button.setSize(value * 10. value * 10);

    }

}

12-8. 파일 선택기

[파일 선택기]

: 파일 시스템을 탐색하여 파일이나 디렉토리를 선택하는 GUI 제공 컴포넌트

: 파일 선택기를 화면에 표시할 때는 JFileChooser클래스 사용

[JFileChooser 클래스]

  • JFileChooser 객체는 단지 파일 선택을 위한 GUI만 제공함
  • 파일 선택기(모달 대화상자)를 화면에 표시
  • *모달 : 대화상자 끝나기 전까지 모든 작업 중지되는 것

[표준 열기 대화상자 생성]

1) 파일 선택기 객체 생성

final JFileChooser fc = new JFileChooser();

2) 파일 선택기 대화상자를 화면에 열기

int returnVal = fc.showOpenDialog(aComponent);

[관련 메소드]

1) showOpenDialog() 메소드

  • 매개변수에 대화상자의 부모 컴포넌트 전달

(부모 컴포넌트는 대화상자 위치에 영향을 줌)

  • 일반적으로 showOpenDialog() 메소드는 액션 리스너 안에서 등장 多
  • showSaveDialog() 메소드

2) setCurrentDirectory() 메소드

  • 디폴트로 파일 선택기는 사용자의 디렉토리에 있는 모든 파일을 표시하지만

사용자가 setCurrentDirectory() 사용하여 파일 선택기의 초기 디렉토리 직접 지정 가능

3) show____Dialog() 메소드

  • 기본적으로 사용자가 파일 선택하였는지 나타내는 정수 반환
  • 반환값은 일반적으로 APPROVE_OPTION 인지만 검사하면 됨

4) getSelectedFile() 메소드 :선택된 파일 얻기 위해 사용 (File 객체를 반환)

public void actionPerformed(e) {

    if (e.getSource() == openButton) {

        int returnVal = fc.showOpenDialog(this);

    if(returnVal == JFileChooser.APPROVE_OPTION) {

        File file = fc.getSelectedFile();

    }else{
                //
}
728x90