1. AWT와 애플릿
1.1. AWT란?
- AWT
- GUI프로그래밍(윈도우 프로그래밍)을 위한 도구
- GUI프로그래밍에 필요한 다양한 컴포넌트를 제공한다.
- Java로 구현하지 않고, OS의 컴포넌트를 그대로 사용한다.
- Swing
- AWT를 확장한 GUI프로그래밍 도구
- AWT보다 더 많은 종류의 컴포넌트를 제공한다.
- OS의 컴포넌트를 사용하지 않고, 순수한 Java로 구현하였다.
1.2. AWT의 구성
- AWT관련 패키지는 모두 java.awt로 시작한다.
- java.awt패키지와 java.awt.event패키지가 AWT의 핵심이다.
- 모든 AWT컴포넌트의 최고 조상은 java.awt.Component클래스이다.(메뉴관련 컴포넌트 제외)
- Container는 다른 컴포넌트를 담을 수 있는 컴포넌트이다.
- 메뉴관련 컴포넌트의 최고 조상은 java.awt.MenuComponent클래스이다.
1.3. 컴포넌트(Component)
- 모든 AWT컴포넌트(메뉴관련 컴포넌트 제외)의 최고 조상
- 컴포넌트라면 반드시 있어야 하는 공통적인 메서드들이 정의되어 있다.
1.4. 컨테이너(Container)
- 다른 컴포넌트를 포함할 수 있는 컴포넌트, Container클래스와 그 자손들
1.4. 컨테이너 - 주요메서드
- add()를 사용해서 컴포넌트를 컨테이너에 담는다.
- 컨테이너에 담긴 컴포넌트는 컨테이너의 전경색, 배경색, 폰트 등의 설정을 그대로 따르게 된다.
(나중에 변경가능)
2. AWT의 주요 컴포넌트
2.1. Frame
- titlebar와 최대화, 최소화, 닫기 버튼을 가진 윈도우(컨테이너)
2.2. Button
- 사용자가 클릭했을 때 어떤 작업이 수행되도록 할 때 사용하는 컴포넌트
2.3. Choice
- 여러 item 중에서 하나를 선택할 수 있게 해주는 컴포넌트
2.4. List - 메서드
- 여러 item 중에서 하나를 선택할 수 있게 해주는 컴포넌트
2.5. Label
- 화면에 텍스트를 표시하는데 사용되는 컴포넌트
2.6. Checkbox - 메서드
- 선택/비선택을 표현하는데 사용되는 컴포넌트
- CheckboxGroup을 사용하면 사지선다와 같이 여러 값 중의 하나를 선택하게 할 수 있다.
2.7. TextField - 메서드
- 사용자로부터 데이터를 자유롭게 입력받을 수 있는 컴포넌트
- 한 줄만 입력할 수 있어서 비교적 길지 않은 값의 입력에 사용된다.
2.8. TextArea - 메서드
- 여러 줄의 텍스트를 입력하거나 보여줄 수 있는 편집가능한 컴포넌트
2.9. Scrollbar
- 사용자가 정해진 범위에서 값을 조절할 수 있게 해주는 컴포넌트
2.10. Canvas
- 주로 그림을 그리거나 이미지를 위한 공간으로 사용되는 컴포넌트
2.11. Panel
- 빈 평면 공간만 가지고 있는 종속적인 컨테이너
- Panel안에 Panel을 넣을 수 있어서 컴포넌트의 다양한 배치에 유용하다.
2.12. ScrollPan
- 단 하나의 컴포넌트만 포함할 수 있는 종속적인 컨테이너
- 제한된 공간에서 큰 컴포넌트를 화면에 보여줄 때 사용한다.
2.13. Dialog
- Frame과 같은 독립적인 컨테이너. titlebar와 닫기버튼을 가지고 있다.
- 주로 화면에 메시지창을 보여주거나 사용자로부터 입력을 받을 때 사용
2.14. FileDialog
- 파일을 열거나 저장할 때 사용되는 Dialog
2.15. Font
- Component클래스의 setFont(Font f)를 사용하면, 폰트를 변경할 수 있다.
2.16. Color
- 색의 표현에 사용되는 클래스 RGB값이나 미리 정의된 색 사용가능
3. 메뉴 만들기
3.1. 메뉴를 구성하는 컴포넌트
3.2. PopupMenu
- 윈도우(Frame)내에서 오른쪽 마우스버튼을 누르면 나타나는 메뉴
4. 레이아웃 매니저
4.1. 레이아웃 매니저를 이용한 컴포넌트 배치
- 레이아웃 매니저는 컨테이너에 포함된 컴포넌트의 배치를 자동관리한다.
- 레이아웃 매니저를 사용하면 컨테이너의 크기가 변경되거나 새로운 컴포넌트가 추가될 때,
컴포넌트를 재배치하는 코드를 작성할 필요가 없다.
- AWT에서는 아래와 같이 5개의 레이아웃 매니저를 제공한다.
4.2. BoarderLayout
- 모두 5개의 영역으로 나누고, 각 영역에 하나의 컴포넌트만 넣을 수 있다.
- 한 영역에 하나 이상의 컴포넌트를 넣으려면 Panel을 사용하면 된다.
4.3. FlowLayout
- 컴포넌트를 워드프로세서와 같은 방식, 즉 왼쪽에서 오른쪽으로 배치한다.
- 3가지 정렬방식(왼쪽,가운데,오른쪽)이 가능하다.
4.4. GridLayout
- 컴포넌트를 워드프로세서와 같은 방식, 즉 왼쪽에서 오른쪽으로 배치한다.
- 3가지 정렬방식(왼쪽,가운데,오른쪽)이 가능하다.
4.5. CardLayout
- 여러 컨테이너를 슬라이드처럼 바꿔가며 보여줄 수 있다.
- 앨범이나 퀴즈 또는 설치 프로그램에 주로 사용된다.
5. 이벤트 처리
5.1. 이벤트란?
- 사용자 또는 프로그램에 의해 발생할 수 있는 하나의 사건
5.2. 이벤트 처리
- 이벤트가 발생했을 때, 어떤 작업이 수행되도록 코드를 작성하는 것
5.3. ActionEvent
- 컴포넌트에 정의된 특정 동작이 수행되었을 때 발생하는 고수준 이벤트
- Button을 누르는 방법은 두 가지(마우스 클릭, spacebar누르기)가 있다.
- Button을 누르면, MouseEvent나 KeyEvent가 발생하지만 ActionEvent도 발생한다.
- MouseEvent와 KeyEvent에 각각 별도의 이벤트처리를 하는 것보다 ActionEvent에만 이벤트처리를
하는 것이 낫다(코드의 중복제거)
5.4. Adapter클래스
- Listener인터페이스를 아무런 내용없이 구현해 놓은 클래스
6. AWT의 그래픽
6.1. paint()와 Graphics
6.2. AWT쓰레드와 repaint()
7. 애플릿(Applet)
7.1. 애플릿이란?
- 웹브라우저를 통해 실행될 수 있는 작은 어플리케이션
7.2. Applet의 생명주기
7.3. Applet의 보안 제약
7.4. Applet과 HTML태그
'프로그램 이론 > JAVA' 카테고리의 다른 글
[JAVA]람다와 스트림(Lambda & Stream) (0) | 2018.05.29 |
---|---|
[JAVA]입출력(I/O) (0) | 2018.05.29 |
[JAVA]쓰레드(Thread) (0) | 2018.05.28 |
[JAVA]지네릭스, 열거형, 애너테이션 (0) | 2018.05.28 |
[JAVA]컬렉션 프레임웍(collections framework) (0) | 2018.05.28 |