17. GUI 프로그래밍
17.1 자바의 GUI 프로그래밍 기술
TUI - Text-based User Interface 텍스트 기반의 인터페이스
GUI - Graphical User Interface 그래픽 기반의 인터페이스
17.1.1 AWT(Abstract Window Toolkit)
GUI 프로그래밍을 위한 도구
GUI 프로그래밍에 필요한 다양한 컴포넌트를 제공
Java와 C로 구현
17.1.2 Swing
AWT를 확장한 GUI 프로그래밍 도구
AWT보다 더 많은 종류의 컴포넌트를 제공
순수한 Java로 구현
17.2 화면 구성 요소
17.2.1 Component와 Container
17.2.2 Container
프레임을 화면에 표시
setVisible(true)
프레임의 닫기 동작
현재 창만 닫음
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
모든 창을 닫고 프로그램을 완전히 종료시킴
setDefaultCloseOperation(EXIT_ON_CLOSE);
화면에서 숨김(종료된 상태가 아님)
setDefaultCloseOperation(HIDE_ON_CLOSE);
17.3 RGB color : 빛의 3원색
011627
#RRGGBB : red, green, blue 색상별로 00~FF(0~255)
#000000 : black ```모니터 생각하면 된다
#FF0000 : red
#00FF00 : green
#0000FF : blue
색상 설정 코드
new Color(red, green, blue)
new Color(Color.red)
17.4 메뉴 만들기
011748
```
* pull down menu(풀다운메뉴)
popup menu(context menu)
17.5 Layout(화면배치)
17.5.1 FlowLayout - 순서대로 배치
17.5.2 BorderLayout - 한 영역에 1개의 컴포넌트만 배치됨
17.5.3 GridLayout
17.5.4 CardLayout
Button button = new Button("버튼");
button.setBounds(0, 0, 50, 25); // x, y, width, height
add.(button);
17.6 이벤트 처리(Event Handling)
17.5.1 이벤트 처리 : user와 system 간의 상호작용
17.5.2 이벤트 처리의 3요소
이벤트 처리기(이벤트 핸들러) : 이벤트가 발생했을 때 처리할 코드
012327
17.5.3 컴포넌트에 이벤트 처리 기능을 추가하는 코드
17.5.4 자바에서 미리 구현된 이벤트 처리 클래스에서 제공하는 기능을 사용하기 위해서는 해당되는 인터페이스만 호출하면 됨
17.7 애플릿(Applet)
17.7.1 웹브라우저에서 실행되는 자바 프로그램
17.7.2 애플릿의 테스트를 위해서는 애플릿뷰어 사용
public
<html>
17.7.3 Applet의 생명주기(Life Cycle)
1. 웹브라우저가 애플릿에 포함된 HTML문서를 읽는다.
2. 웹브라우저가 애플릿(자바클래스)을 다운로드한다.
3. 웹브라우저가 애플릿의 인스턴스를 생성한다.
4. 애플릿이 초기화된다. - init()
5. 애플릿이 실행된다. - start()
17.8 Window Builder
17.8.1 위지윅(WYSIWYG, what you see is what you get)
사용자가 현재 화면에서 보고 있는 내용과 동일한 출력 결과를 얻을 수 있다는 개념
17.8.2 이클립스 플러그인 Window Builder 설치
Help - Install New Software
http://download.eclipse.org/windowbuilder/WB/integration/4.5/
Design 탭을 눌러서 컴포넌트 배치 및 이벤트 처리 기능
17.8.3 Eclipse Plugin
013655 imagesss
17.9 실습예제
17.9.1 FrameExam.java
17.9.2 PanelExam.java
```note.
* 화면구성요소
container : 그릇
Frame
component : 음식015314
* 상속관계, 포함관계
상속 : 1개만 가능
포함 : 여러개 가능
MyColorAction.java???
17.9.5 ButtonExam.java
17.9.6 EventExam1.java
17.9.7 EventExam2.java
17.9.8 EventExam3.java
17.9.9 ButtonEventExam.java (윈도우 빌더를 이용)
17.9.10 ClockExam.java
17.9.11 RadioExam.java
17.9.12 CheckboxExam.java
17.9.13 ComboExam.java
17.9.14 ListExam.java
17.9.15 CanvasExam.java
```
* 이벤트 처리의 3요소
이벤트소스.이벤트리스너(이벤트핸들러)
이벤트소스 : 이벤트의 대상
이벤트리스너 : 이벤트가 일어나는지 감시, 관찰
이벤트핸들러 : 이벤트 처리기(이벤트가 일어날 때의 동작)
17.9.16 ProgressExam.java
```
* Multi Thread 작업단위가 2개 이상
Background Thread - setValue() 호출
Main Thread - 화면 변경
17.9.18 LoginExam.java
17.9.19 TextAreaExam.java
```note.
JTextField - single line
JTextArea - multi line
17.9.20 TreeExam.java
```
트리구조
root node
17.9.21 TableExam.java
17.9.24 KeyMouseExam.java (일반클래스로 작성) ``키이벤트안먹힘
```
이벤트소스.이벤트리스너(이벤트핸들러)
17.9.25 CardExam.java
17.9.24 MouseExam.java (일반클래스로 작성)
17.9.25 MessageExam.java
17.9.27 MenuExam.java
17.9.28 PopupExam.java
17.9.29 MdiExam.java
17.9.30 ColorDialogExam.java
17.9.31 TabExam.java