40
자자 자자 5.0 5.0 자자자자자 자자자자자

자바 5.0 프로그래밍

Embed Size (px)

DESCRIPTION

자바 5.0 프로그래밍. chapter 14 : GUI. 학습목표. AWT ( Abstract Window Toolkit) AWT 계층구조 Container 특징 LayoutManager AWT 이벤트 이벤트 처리방법 Adapter. AWT. 정의. 자바의 GUI 및 이벤트처리를 담당하는 GUI 메커니즘을 의미. 작성방법. java.awt 패키지의 클래스 이용. OS 자원을 이용하여 GUI 를 보여준다 . 플랫폼에 종속적이다 ( weight ). - PowerPoint PPT Presentation

Citation preview

Page 1: 자바  5.0  프로그래밍

자바 자바 5.0 5.0 프로그래밍프로그래밍

Page 2: 자바  5.0  프로그래밍

chapter 14chapter 14 : :

GUIGUI

Page 3: 자바  5.0  프로그래밍

학습목표학습목표

AWT ( Abstract Window Toolkit)AWT ( Abstract Window Toolkit)

AWT AWT 계층구조계층구조

Container Container 특징특징

LayoutManagerLayoutManager

AWT AWT 이벤트이벤트

이벤트 처리방법이벤트 처리방법

AdapterAdapter

Page 4: 자바  5.0  프로그래밍

자바의 자바의 GUI GUI 및 이벤트처리를 담당하는 및 이벤트처리를 담당하는 GUI GUI 메커니즘을 의미메커니즘을 의미 ..

AWT AWT

정의정의

작성방법작성방법java.awt java.awt 패키지의 클래스 이용패키지의 클래스 이용 ..

javax.swing javax.swing 패키지의 클래스 이용패키지의 클래스 이용 ..

OSOS 자원을 이용하여 자원을 이용하여 GUIGUI 를 보여준다를 보여준다 .. 플랫폼에 종속적이다 플랫폼에 종속적이다 ( weight )( weight )

자체적인 자체적인 GUIGUI 클래스로 보여준다클래스로 보여준다 .. 플랫폼에 독립적이다 플랫폼에 독립적이다 ( light )( light )

Page 5: 자바  5.0  프로그래밍

AWT AWT

계층구조계층구조

Page 6: 자바  5.0  프로그래밍

비주얼비주얼 ComponentComponent

AWTAWT

구성요소구성요소

Button , Checkbox , Label Button , Checkbox , Label 등등 반드시 반드시 ContainerContainer 을 통해서 보여진다을 통해서 보여진다 ..Container Container

Window Window 계열 계열 : : 비주얼컴포넌트 및 비주얼컴포넌트 및 PanelPanel 을 보여준다을 보여준다 .. - Frame- Frame - Dialog- Dialog

Panel Panel 계열 계열 : : - Applet- Applet - - 독립적으로 작동하지 못하고 반드시 독립적으로 작동하지 못하고 반드시 WindowWindow 계열을 통해서 계열을 통해서 보여진다보여진다 ..

LayoutManager LayoutManager BorderLayout , FlowLayout ,CardLayout , GridLayout BorderLayout , FlowLayout ,CardLayout , GridLayout 등등 컴포넌트의 위치 및 크기 설정컴포넌트의 위치 및 크기 설정 ..

Page 7: 자바  5.0  프로그래밍

AWTAWT

실행화면실행화면

Page 8: 자바  5.0  프로그래밍

일반적인 응용프로그램에서 윈도우를 생성하기 위해 사용된다일반적인 응용프로그램에서 윈도우를 생성하기 위해 사용된다 ..기본적으로 타이틀기본적으로 타이틀 , , 최소버튼최소버튼 ,, 최대버튼최대버튼 ,, 종료버튼이 지원된다종료버튼이 지원된다 ..상위클래스인 상위클래스인 WindowWindow 은 타이틀은 타이틀 ,, 메뉴가 지원되지 않는다메뉴가 지원되지 않는다 ..기본으로 화면에 안보이게 설정했기 때문에 반드시 기본으로 화면에 안보이게 설정했기 때문에 반드시 f.setVisible( true)f.setVisible( true)값으로 설정한다값으로 설정한다 ..화면크기는 화면크기는 setSize() , setBounds() setSize() , setBounds() 메소드를 사용한다메소드를 사용한다 ..기본 기본 LayoutManagerLayoutManager 은 은 BorderLayout BorderLayout 이다이다 ..

ContainerContainer

FrameFrame

컴포넌트들을 그룹별로 묶어서 처리할 때 사용한다컴포넌트들을 그룹별로 묶어서 처리할 때 사용한다 ..독립적으로 보여주지 않고 반드시 독립적으로 보여주지 않고 반드시 FrameFrame 을 통해서 보여진다을 통해서 보여진다 ..기본 기본 LayoutManagerLayoutManager 은 은 FlowLayout FlowLayout 이다이다 ..주로 컴포넌트들의 화면배치문제로 인해 주로 컴포넌트들의 화면배치문제로 인해 PanelPanel 을 자주 사용한다을 자주 사용한다 ..

PanelPanel

Page 9: 자바  5.0  프로그래밍

GUIGUI 화면을 구성하는 기본단위로서 각 컴포넌트들의 공통적인 화면을 구성하는 기본단위로서 각 컴포넌트들의 공통적인 메소드를 정의하고 있다메소드를 정의하고 있다 ..

ComponentComponent

특징특징

종류종류

Page 10: 자바  5.0  프로그래밍

컴포넌트들을 자동으로 배치하는 기능을 가진 객체를 컴포넌트들을 자동으로 배치하는 기능을 가진 객체를 LayoutManagerLayoutManager라고 한다라고 한다 ..컨테이너에 컴포넌트를 배치할 때의 위치와 크기가 정해져 있다컨테이너에 컴포넌트를 배치할 때의 위치와 크기가 정해져 있다 ..컨테이너는 기본적으로 하나의 컨테이너는 기본적으로 하나의 LayoutManagerLayoutManager 를 갖는다를 갖는다 ..컨테이너 고유의 컨테이너 고유의 LayoutManagerLayoutManager 를 바꿀수 있다를 바꿀수 있다 ..

setLayout() setLayout() 메소드 이용메소드 이용

LayoutManager ( LayoutManager ( 배치지시자 배치지시자 ))

특징특징

BorderLayoutBorderLayoutFlowLayoutFlowLayoutCardLayoutCardLayoutGridLayoutGridLayoutGridBagLayoutGridBagLayout

종류종류

Page 11: 자바  5.0  프로그래밍

FrameFrame 의 기본 배치관리자 이다의 기본 배치관리자 이다 ..55 개의 영역으로 구분되어 배치된다개의 영역으로 구분되어 배치된다 ..기본은 기본은 Center Center 이다이다 ..CenterCenter 영역은 다른 영역이 지정되지 않으면 그 영역을 포함한다영역은 다른 영역이 지정되지 않으면 그 영역을 포함한다 ..컴포넌트 크기가변 컴포넌트 크기가변 , , 위치불변위치불변배치관리자 변경메소드 배치관리자 변경메소드 : f.setLayout( new FlowLayout());: f.setLayout( new FlowLayout());

BorderLayoutBorderLayout

특징특징

Page 12: 자바  5.0  프로그래밍

BorderLayoutBorderLayout

예제예제

Page 13: 자바  5.0  프로그래밍

Panel Panel 의 기본 배치관리자 이다의 기본 배치관리자 이다 ..수평으로 순서대로 늘어놓는 형태의 배치관리자이다수평으로 순서대로 늘어놓는 형태의 배치관리자이다 ..컴포넌트 크기불변컴포넌트 크기불변 , , 위치가변위치가변

FlowLayoutFlowLayout

특징특징

Page 14: 자바  5.0  프로그래밍

FlowLayoutFlowLayout

예제예제

Page 15: 자바  5.0  프로그래밍

바둑판 형태의 배치관리자이다바둑판 형태의 배치관리자이다 ..생성시 행과열을 지정한다생성시 행과열을 지정한다 ..컴포넌트 추가는 좌측에서 우측으로 컴포넌트 추가는 좌측에서 우측으로 , , 위에서 아래로 추가된다위에서 아래로 추가된다 ..

GridLayoutGridLayout

특징특징

Page 16: 자바  5.0  프로그래밍

GridLayoutGridLayout

예제예제

Page 17: 자바  5.0  프로그래밍

Panel Panel 사용예제사용예제

Page 18: 자바  5.0  프로그래밍

GUI GUI 이벤트이벤트

Page 19: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

이벤트이벤트 ( Event )( Event )GUI GUI 컴포넌트에서 발생되는 모든 행위를 지칭하는 용어컴포넌트에서 발생되는 모든 행위를 지칭하는 용어 ..

- - 버튼을 클릭하거나 윈도우 종료단추를 클릭하는 행동버튼을 클릭하거나 윈도우 종료단추를 클릭하는 행동

이벤트 소스이벤트 소스 ( Event Source)( Event Source)Event Event 가 발생된 컴포넌트를 의미한다가 발생된 컴포넌트를 의미한다 ..

- - 버튼을 클릭하면 이벤트가 발생이 됐으며 이벤트소스는 버튼을 클릭하면 이벤트가 발생이 됐으며 이벤트소스는 버튼이된다버튼이된다 ..

이벤트 처리이벤트 처리 ( Event Handling)( Event Handling)EventEvent 가 발생되었을 때 실제로 발생되는 동작을 의미한다가 발생되었을 때 실제로 발생되는 동작을 의미한다 ..

- - 윈도우 종료버튼을 클릭하면 창이 닫힌다윈도우 종료버튼을 클릭하면 창이 닫힌다 ..

이벤트 리스너이벤트 리스너 ( Event Listener)( Event Listener)컴포넌트에서 이벤트의 발생여부를 체크하고 실제적으로컴포넌트에서 이벤트의 발생여부를 체크하고 실제적으로 , , 발생된 각 이벤트의 처리메소드를 정의하고 있는 프로세스를 발생된 각 이벤트의 처리메소드를 정의하고 있는 프로세스를 의미의미 ..인터페이스로 선언인터페이스로 선언 ..

Page 20: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

이벤트 처리자이벤트 처리자 ( Event Handler)( Event Handler)이벤트 리스너에 전달된 이벤트를 실제로 구현작업을 담당하는이벤트 리스너에 전달된 이벤트를 실제로 구현작업을 담당하는

클래스를 의미한다클래스를 의미한다 ..이벤트리스너를 이벤트리스너를 implements implements 해서 구현한다해서 구현한다 ..

자바의 이벤트 처리방법자바의 이벤트 처리방법GUIGUI 프로그램이 실행중에 프로그램이 실행중에 OSOS 가 이벤트가 발생이 되는지를 검사가 이벤트가 발생이 되는지를 검사 ..이벤트가 발생되면 이벤트가 발생되면 OSOS 가 가 JVMJVM 에게 이벤트를 전달한다에게 이벤트를 전달한다 ..JVMJVM 은 발생된 이벤트를 처리하기 위하여 이벤트객체를 생성은 발생된 이벤트를 처리하기 위하여 이벤트객체를 생성 ..생성된 이벤트객체를 이벤트리스너를 구현한 이벤트핸들러로생성된 이벤트객체를 이벤트리스너를 구현한 이벤트핸들러로

전달하여 이벤트 처리를 한다전달하여 이벤트 처리를 한다 ..

이벤트발생이벤트발생JVMJVM

이벤트핸들러이벤트핸들러버튼클릭버튼클릭

interfaceinterface

Page 21: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

java.awt.event java.awt.event 패키지의 패키지의 Event Event 계층구조계층구조

AWTEventAWTEvent

ActionEventActionEvent

InputEventInputEvent PaintEventPaintEvent

KeyEventKeyEvent MouseEventMouseEvent

AdjustmentEventAdjustmentEventComponentEventComponentEvent ItemEventItemEvent TextEventTextEvent

FocusEventFocusEventContainerEventContainerEvent WindowEventWindowEvent

Page 22: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

java.awt.event java.awt.event 패키지의 패키지의 Event Event 내용내용

이벤트 종류 설명ActionEvent 버튼 , 리스트 , 메뉴 등의 컴포넌트가 눌리거나 선택이 되었을 때 발생하는 이벤트

AdjustmentEvent

스크롤바와 같은 조정 가능한 컴포넌트에서 조정이 일어나면 발생하는 이벤트

ComponentEvent

컴포넌트의 모습 , 이동 , 크기가 변화될 때 발생하는 이벤트

ItemEvent 리스트와 같은 선택항목이 있는 컴포넌트에서 선택항목이 선택될 때 발생되는 이벤트

TextEvent 텍스트 컴포넌트에서 값이 입력될 때 발생하는 이벤트

ContainerEvent

컨테이너에 컴포넌트가 추가되거나 제거될 때 발생하는 이벤트

FocusEvent 컴포넌트에 초점 (Focus) 이 들어 올 때 발생하는 이벤트

PaintEvent 컴포넌트가 그려져야 할 때 발생하는 이벤트

WindowEvent 윈도우가 활성화되거나 비활성화 될 때 , 최소 , 최대 , 종료 될 때 발생하는 이벤트

KeyEvent 키보드로부터 입력이 될 때 발생하는 이벤트

MouseEvent 마우스가 눌려지거나 움직일 때 , 마우스 커서가 컴포넌트 영역에 들어가거나 벗어날 때 발생하는 이벤트

Page 23: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

컴포넌트별 발생이벤트 종류컴포넌트별 발생이벤트 종류

컴포넌트컴포넌트 발생 가능한 이벤트발생 가능한 이벤트

ButtonButtonActionEvent, ActionEvent, FocusEvent,KeyEvent,MouseEvent, FocusEvent,KeyEvent,MouseEvent, ComponentEventComponentEvent

CheckboxCheckbox ItemEvent, FocusEvent,KeyEvent, ItemEvent, FocusEvent,KeyEvent, MouseEvent,ComponentEventMouseEvent,ComponentEvent

FrameFrame WindowEvent,FoucsEvent,KeyEvent,MoWindowEvent,FoucsEvent,KeyEvent,MouseEvent,ComponentEventuseEvent,ComponentEvent

ListListActionEvent, FocusEvent, KeyEvent, ActionEvent, FocusEvent, KeyEvent, MouseEvent,ItemEvent, MouseEvent,ItemEvent, ComponentEventComponentEvent

LabelLabel FocusEvent, KeyEvent, MouseEvent, FocusEvent, KeyEvent, MouseEvent, ComponentEventComponentEvent

ChoiceChoice ItemEvent , FocusEvent, KeyEvent, ItemEvent , FocusEvent, KeyEvent, MouseEvent, ComponentEventMouseEvent, ComponentEvent

AdjustableAdjustable AdjustmentEventAdjustmentEvent

Page 24: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

ActionEventActionEvent

버튼이 클릭되거나 리스트버튼이 클릭되거나 리스트 , , 메뉴등이 선택되었을 때 발생한다메뉴등이 선택되었을 때 발생한다 ..텍스트필드에서 엔터를 쳤을때도 발생한다텍스트필드에서 엔터를 쳤을때도 발생한다 ..

Page 25: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

ItemEventItemEvent

체크박스체크박스 , , 리스트 리스트 , , 초이스 컴포넌트에서 항목을 선택하거나초이스 컴포넌트에서 항목을 선택하거나 해제했을 경우 발생한다해제했을 경우 발생한다 ..

Page 26: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

keyEventkeyEvent키보드를 통해서 키 입력을 했을 경우에 발생한다키보드를 통해서 키 입력을 했을 경우에 발생한다 ..

Page 27: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

MouseEventMouseEvent

마우스를 클릭하거나 포인터가 컴포넌트 영역에 들어오거나마우스를 클릭하거나 포인터가 컴포넌트 영역에 들어오거나 벗어날 때 발생한다벗어날 때 발생한다 ..

Page 28: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

WindowEventWindowEvent

윈도우를 활성화 윈도우를 활성화 ,, 아이콘화 아이콘화 ,, 비활성화 작업시 발생한다비활성화 작업시 발생한다 ..

Page 29: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

이벤트 리스너 종류이벤트 리스너 종류

이벤트 리스너 종류이벤트 리스너 종류 구현 메소드구현 메소드

ActionListenerActionListener actionPerformed( ActionEvent )actionPerformed( ActionEvent )

AdjustmentListenAdjustmentListenerer

adjustmentValueChanged( AdjustmeadjustmentValueChanged( AdjustmentEvent)ntEvent)

ItemListenerItemListener itemStateChanged( ItemEvent )itemStateChanged( ItemEvent )

TextListenerTextListener textValueChanged( TextEvent )textValueChanged( TextEvent )

FocusListenerFocusListenerfocusGained(FocusEvent)focusGained(FocusEvent)

focusLost(FocusEvent)focusLost(FocusEvent)

KeyListenerKeyListenerkeyPressed(KeyEvent)keyPressed(KeyEvent)

keyReleased(KeyEvent)keyReleased(KeyEvent)

keyTyped(KeyEvent)keyTyped(KeyEvent)

MouseMotionListMouseMotionListenerener

mouseDragged(MouseEvent), mouseDragged(MouseEvent), mouseMoved(MouseEvent)mouseMoved(MouseEvent)

Page 30: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

이벤트 리스너 종류이벤트 리스너 종류

이벤트 리스너 종류이벤트 리스너 종류 구현 메소드구현 메소드

MouseListenerMouseListener

mouseClicked(MouseEvent)mouseClicked(MouseEvent)

mouseEntered(MouseEvent)mouseEntered(MouseEvent)

mouseExited(MouseEvent)mouseExited(MouseEvent)

mousePressed(MouseEvent)mousePressed(MouseEvent)

mouseReleased(MouseEvent)mouseReleased(MouseEvent)

WindowListenerWindowListener

windowOpened(WindowEvent)windowOpened(WindowEvent)

windowClosing(WindowEvent)windowClosing(WindowEvent)

windowClosed(WindowEvent)windowClosed(WindowEvent)

windowActivated(WindowEvent)windowActivated(WindowEvent)

windowDeactivated(WindowEvent)windowDeactivated(WindowEvent)

windowIconified(WindowEvent)windowIconified(WindowEvent)

windowDeiconfied(WindowEvent)windowDeiconfied(WindowEvent)

Page 31: 자바  5.0  프로그래밍

AWT AWT 이벤트이벤트

이벤트 처리 이벤트 처리 33 단계단계1 1 단계단계 ..

이벤트소스를 결정한다이벤트소스를 결정한다 ..

2 2 단계단계 ..

이벤트리스너를 결정하고 리스너를 구현할 이벤트핸들러를이벤트리스너를 결정하고 리스너를 구현할 이벤트핸들러를 작성한다작성한다 . . 반드시 인터페이스를 구현한다반드시 인터페이스를 구현한다 ..

3 3 단계단계 .. 이벤트소스와 이벤트리스너를 연결한다이벤트소스와 이벤트리스너를 연결한다 .. 연결방법은 연결방법은 addXXXListener() addXXXListener() 메소드를 이용한다메소드를 이용한다 .. ( XXXListener ( XXXListener 은 인터페이스명 이다은 인터페이스명 이다 . ). )

이벤트 핸들러 위치에 따른 이벤트 핸들러 위치에 따른 44 가지 이벤트처리법가지 이벤트처리법GUI GUI 와 이벤트핸들러가 같은 클래스로 처리와 이벤트핸들러가 같은 클래스로 처리 ..GUI GUI 와 이벤트핸들러가 다른 클래스로 처리와 이벤트핸들러가 다른 클래스로 처리 ..GUI GUI 와 이벤트핸들러가 내부클래스로 처리와 이벤트핸들러가 내부클래스로 처리 ..GUI GUI 와 이벤트핸들러가 와 이벤트핸들러가 anonymousanonymous 클래스로 처리클래스로 처리 ..

Page 32: 자바  5.0  프로그래밍

이벤트 핸들러 위치에 따른 이벤트 핸들러 위치에 따른 44 가지 이벤트처리법가지 이벤트처리법

같은 클래스 처리같은 클래스 처리

Page 33: 자바  5.0  프로그래밍

같은 클래스 처리같은 클래스 처리

이벤트소스 분석에 의한 이벤트 처리이벤트소스 분석에 의한 이벤트 처리getActionCommand()getActionCommand()getSource()getSource()

Page 34: 자바  5.0  프로그래밍

이벤트 핸들러 위치에 따른 이벤트 핸들러 위치에 따른 44 가지 이벤트처리법가지 이벤트처리법

다른 클래스 처리다른 클래스 처리

Page 35: 자바  5.0  프로그래밍

이벤트 핸들러 위치에 따른 이벤트 핸들러 위치에 따른 44 가지 이벤트처리법가지 이벤트처리법

내부 클래스 처리내부 클래스 처리

Page 36: 자바  5.0  프로그래밍

이벤트 핸들러 위치에 따른 이벤트 핸들러 위치에 따른 44 가지 이벤트처리법가지 이벤트처리법

anonymous anonymous 클래스 처리클래스 처리

Page 37: 자바  5.0  프로그래밍

Adapter Adapter 클래스클래스

정의정의22 개 이상의 추상메소드를 가진 개 이상의 추상메소드를 가진 Listener Listener 인터페이스를 미리 인터페이스를 미리 구현한 클래스이다구현한 클래스이다 ..

용도용도Listener Listener 인터페이스를 이용해서 이벤트처리를 하면 반드시 인터페이스를 이용해서 이벤트처리를 하면 반드시

추상메소드를 구현해야 한다추상메소드를 구현해야 한다 ..필요하지 않는 메소드까지도 구현해야하는 불편함을 해소할 수 필요하지 않는 메소드까지도 구현해야하는 불편함을 해소할 수 있다있다 ..

방법방법Listener Listener 인터페이스 대신 인터페이스 대신 Adapter Adapter 클래스로 이벤트처리를 한다클래스로 이벤트처리를 한다 ..

Page 38: 자바  5.0  프로그래밍

Adapter Adapter 클래스클래스

Listener Listener 와 와 AdapterAdapter

Page 39: 자바  5.0  프로그래밍

Adapter Adapter 클래스클래스

예제예제

Page 40: 자바  5.0  프로그래밍

요약 정리요약 정리

AWT AWT 와 컴포넌트와 컴포넌트

FrameFrame

PanelPanel

LayoutManagerLayoutManager

이벤트 처리이벤트 처리

이벤트 처리 이벤트 처리 44 가지 방법가지 방법

AdapterAdapter