🟩 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{
//
}
'Java > [학교] Java_GUI' 카테고리의 다른 글
[과제] 자바_연결리스트_구현 (0) | 2021.12.12 |
---|---|
자바_프로젝트_스윙_(리듬게임) (0) | 2021.12.12 |
ch11. 그래픽 프로그래밍 (0) | 2021.09.28 |
ch10. 사용자 이벤트 처리 (0) | 2021.09.14 |
ch09. 인터페이스, 람다식, 패키지 (0) | 2021.09.07 |