* 공부 정리일자 (2022년 8~12월)
- 책 : 명품 자바 에센셜
- 개인적으로 공부 및 복습하면서 정리한 내용입니다. (사진 제외)
* 목차
10장. 스윙 컴포넌트 활용
10.1 스윙 컴포넌트 소개
10.2 JLabel로 문자열과 이미지 출력
10.3 JButton으로 버튼 만들기
10.4 JCheckBox로 체크박스 만들기
10.5 JRadioButton으로 라디오버튼 만들기
10.6 JTextField로 한 줄 입력 창 만들기
10.7 JTextArea로 여러 줄의 입력 창 만들기
10.8 JList〈E〉로 리스트 만들기
10.9 JComboBox〈E〉콤보박스 만들기
10.10 메뉴 만들기
10.11 팝업 다이얼로그
1. 복습 (중요 키워드 위주)
10) 10강. 스윙 컴포넌트 활용 (책 392p)
10.1) 스윙 컴포넌트 소개 (책 392p)
(1) 자바의 GUI 프로그래밍 방법 - 2가지
* 컴포넌트 기반 GUI 프로그래밍
- 스윙 컴포넌트를 이용하여 쉽게 GUI를 구축
- 자바에서 제공하는 컴포넌트의 한계를 벗어나지 못함
* 그래픽 기반 GUI 프로그래밍
- 그래픽을 이용하여 GUI 구축
- 개발자가 직접 그래픽으로 화면을 구성하는 부담
- 독특한 GUI를 구성할 수 있는 장점
- GUI 처리의 실행 속도가 빨라, 게임 등에 주로 이용
* 컴포넌트 기반 GUI 프로그래밍에 사용되는 스윙 컴포넌트
(2) 스윙 컴포넌트의 공통 메소드, JComponent의 메소드
* JComponent
- 스윙 컴포넌트는 모두 상속받는 슈퍼 클래스, 추상 클래스
- 스윙 컴포넌트들이 상속받는 공통 메소드와 상수 구현
- JComponent의 주요 메소드 사례
* 예제 10-1 : 스윙 컴포넌트의 공통 기능, JComponent의 메소드
10.2) JLabel로 문자열과 이미지 출력 (책 395p)
(1) JLabel의 용도
- 문자열이나 이미지를 화면에 출력하기 위한 목적
* 레이블 생성
(2) 레이블 생성 예시
* 문자열 레이블 생성
* 이미지 레이블 생성
- 이미지 파일로부터 이미지를 읽기 위해 ImageIcon 클래스 사용
- 다룰 수 있는 이미지 : png, gif, jpg
-- sunset.jpg의 경로명이 "images/sunset.jpg"인 경우
* 수평 정렬 값을 가진 레이블 컴포넌트 생성
- 수평 정렬로, 문자열과 이미지를 모두 가진 레이블
* 예제 10-2 : JLabel 이용 문자열과 이미지 출력
10.3) JButton으로 버튼 만들기 (책 397p)
(1) JButton의 용도
- 버튼 모양의 컴포넌트. 사용자로부터 명령을 입력 받기 위한 목적
- 버튼은 클릭될 때 Action 이벤트 발생
* 버튼 생성
- "hello" 문자열을 가진 버튼 생성 예
(2) 이미지 버튼 만들기
* 하나의 버튼에 3 개의 이미지 등록
- 마우스 조작에 따라 3 개의 이미지 중 적절한 이미지 자동 출력
[ 3개의 버튼 이미지 ]
* normalIcon
- 버튼의 보통 상태(디폴트) 때 출력되는 이미지
- 생성자에 이미지 아이콘 전달 혹은 JButton의 setIcon(normalIcon);
* rolloverIcon
- 버튼에 마우스가 올라갈 때 출력되는 이미지
- 이미지 설정 메소드 : JButton의 setRolloverIcon(rolloverIcon);
* pressedIcon
- 버튼을 누른 상태 때 출력되는 이미지
- 이미지 설정 메소드 : JButton의 setPressedIcon(pressedIcon)
(3) 이미지 버튼에 이미지 설정
* 이미지 로딩
- 필요한 이미지 로딩 : new ImageIcon(이미지 경로명);
사례)
* 버튼에 이미지 등록
- JButton의 메소드를 호출하여 이미지 등록
사례)
- 실행 중에 normal 이미지(디폴트 이미지) 교체 사례
* 예제 10-3 : JButton을 이용한 이미지 버튼 만들기
- 그림과 같이 작동하는 이미지 버튼을 작성하라.
10.4) JCheckBox로 체크박스 만들기 (책 400p)
(1) JCheckBox의 용도
- 선택(selected)과 비선택(deselected) 두 상태만 가지는 버튼
* 체크박스 생성
* 문자열을 가진 체크박스 생성 예시
* 예제 10-4 : JCheckBox로 체크박스 만들기
- 그림과 같은 3개의 문자열 체크박스를 가진 프로그램을 작성하라.
(2) 체크박스에 Item 이벤트 처리
* 체크 박스의 선택 상태에 변화가 생길 때 발생하는 이벤트
- 사용자가 마우스나 키보드로 체크박스를 선택/해제할 때
- 프로그램에서 체크박스를 선택/해제하여 체크 상태에 변화가 생길 때
- 이벤트가 발생하면 ItemEvent 객체 생성
- ItemListener 리스너를 이용하여 이벤트 처리
* ItemListener 리스너의 추상 메소드
* ItemEvent의 주요 메소드
* 예제 10-5 : ItemEvent를 활용하여 체크박스로 가격 합산 응용
- 그림과 같이 사과, 배, 체리 체크박스를 만들고,
사용자가 과일을 선택하면 선택된 과일의 가격을 합산하여 출력하는 프로그램을 작성하라.
* 예제 10-5 정답
10.5) JRadioButton으로 라디오버튼 만들기 (책 405p)
(1) JRadioButton의 용도
- 버튼 그룹을 형성하고, 그룹에 속한 버튼 중 하나만 선택되는 라디오버튼
- 체크박스와의 차이점
-- 체크 박스는 각각 선택/해제가 가능하지만,
라디오버튼은 그룹에 속한 버튼 중 하나만 선택
* 라디오버튼 생성
(2) 라디오버튼 생성 및 Item 이벤트 처리
* 버튼 그룹과 라디오버튼 생성 과정
* 라디오버튼에 Item 이벤트 처리 : ItemListener 리스너 이용
- 라디오버튼이 선택/해제되어 상태가 달라지면, Item 이벤트 발생
- 사용자가 마우스나 키보드로 선택 상태를 변경할 때
- 프로그램에서 JRadioButton의 setSelected()를 호출하여 선택 상태를 변경할 때
* 예제 10-6 : JRadioButton으로 라디오버튼 만들기
10.6) JTextField로 한 줄 입력 창 만들기 (책 408p)
(1) JTextField
* 한 줄의 문자열을 입력 받는 창 (텍스트필드)
- 텍스트 입력 도중 <Enter>키가 입력되면 Action 이벤트 발생
- 입력 가능한 문자 개수와 입력 창의 크기는 서로 다름
* 텍스트필드 생성
- “컴퓨터공학과”로 초깃값을 가지는 텍스트필드 생성 예
* 예제 10-7 : JTextField로 텍스트필드 만들기
- JTextField를 이용하여 그림과 같이 이름, 학과, 주소를 입력받는 폼을 만들어라. 입력 창의 열의 개수는 모두 20으로 한다.
10.7) JTextArea로 여러 줄의 입력 창 만들기 (책 410p)
(1) JTextArea
* 여러 줄의 문자열을 입력받을 수 있는 창 (텍스트영역)
- 스크롤바를 지원하지 않는다.
- JScrollPane 객체에 삽입하여 스크롤바 지원받음
* 생성자
(2) 텍스트영역 생성 예
* 예제 10-8 : JTextArea로 여러 줄이 입력되는 창 만들기
- 그림과 같이 텍스트필드에 문자열을 입력한 후
<Enter> 키를 입력하면 텍스트영역 창에 문자열을 추가하고 텍스트필드 입력 창은 지우는 프로그램을 작성하라.
10.8) JList〈E〉로 리스트 만들기 (책 412p)
(1) JList<E>
* 하나 이상의 아이템을 보여주고 아이템을 선택하도록 하는 리스트
- Java 7부터 제네릭 리스트로 바뀜
-- <E>에 지정된 타입의 객체만 저장하는 리스트
- JScrollPane에 JList<E>를 삽입하여 스크롤 가능
* 리스트 생성
* 예) 9개의 과일 이름 문자열이 든 리스트 만들기
* 예제 10-9 : JList<E>로 다양한 리스트 만들기
- 그림과 같은 3개의 리스트를 가진 프로그램을 작성하라.
10.9) JComboBox〈E〉콤보박스 만들기 (책 414p)
(1) JComboBox<E>
- 텍스트필드와 버튼, 그리고 드롭다운 리스트로 구성되는 콤보박스
- 드롭다운 리스트에서 선택한 것이 텍스트필드에 나타남
* 콤보박스 생성
- 예) 텍스트를 아이템으로 가진 콤보박스 생성
* 예제 10-10 : JComboBox<E>로 콤보박스 만들고 활용하기
- 그림과 같이 "apple", "babana", "mango"의 과일 이름을 가진 콤보박스를 만들고
사용자가 선택한 과일의 이미지를 콤보박스 옆에 출력하는 프로그램을 작성하라.
10.10) 메뉴 만들기 (책 416p)
(1) 메뉴 구성
* 메뉴 만들기에 필요한 스윙 컴포넌트
- 메뉴아이템 – JMenuItem
- 메뉴 – JMenu
-- 여러 개의 메뉴 아이템을 가짐
- 메뉴바 – JMenuBar
-- 여러 개의 메뉴를 붙이는 바이며, 프레임에 부착됨
- 분리선
-- 메뉴아이템 사이의 분리선으로 separator라고 부름
-- JMenu의 addSeparator()를 호출하여 삽입함
(2) 메뉴 만드는 과정
* 예제 10-11 : 메뉴 만들기
- 그림과 같이 Screen, Edit, Source, Project, Run의 5개 메뉴를 가지며,
Screen 메뉴에만 4개의 메뉴아이템과 분리선(separator)을 가지도록 프로그램을 작성하라.
* 예제 10-12 : 메뉴에 Action 리스너 활용
- 그림과 같이 Screen 메뉴에 4개의 메뉴아이템을 만들고,
Load 메뉴아이템을 선택하면 이미지를 하나 로딩하여 출력하고,
Hide 메뉴아이템을 선택하면 이미지를 보이지 않게 하며,
ReShow 메뉴아이템을 선택하면 숨겨진 이미지를 다시 보이게 하고,
Exit 메뉴아이템을 선택하면 프로그램을 종료하도록 Action 리스너를 작성하라.
* 예제 10-12 정답
10.11) 팝업 다이얼로그 (책 421p)
(1) 팝업 다이얼로그, JOptionPane
* 팝업 다이얼로그
- 사용자에게 메시지를 전달하거나 문자열을 간단히 입력받는 용도
- JOptionPane 클래스를 이용하여 생성
-- static 타입의 간단한 메소드 이용
(2) 입력 다이얼로그 - JOptionPane.showInputDialog()
- 한 줄을 입력 받는 다이얼로그
(3) 확인 다이얼로그 - JOptionPane.showConfirmDialog()
* 사용자로부터 Yes/No 응답을 입력 받는 다이얼로그
(4) 메시지 다이얼로그 – showMessageDialog
- 단순 메시지를 출력하는 다이얼로그
* 예제 10-13 : JOptionPane으로 3가지 팝업 다이얼로그 만들기
- 다음 그림과 같이 3개의 팝업 다이얼로그를 출력하는 응용프로그램을 작성해보라
* 예제 10-13 정답
'프로그래밍 공부 > Java' 카테고리의 다른 글
[ Java 프로그래밍 ] 공부 정리 - 12강. 자바 스레드 (0) | 2023.04.30 |
---|---|
[ Java 프로그래밍 ] 공부 정리 - 9강. 자바의 이벤트 처리 (0) | 2023.04.30 |
[ Java 프로그래밍 ] 공부 정리 - 8강. 자바 GUI 스윙 기초 (0) | 2023.04.30 |
[ Java 프로그래밍 ] 공부 정리 - 6강. 모듈과 패키지 개념, 자바 패키지 활용 (0) | 2023.04.30 |
[ Java 프로그래밍 ] 공부 정리 - 5강. 상속 (0) | 2023.04.30 |