(Microsoft PowerPoint - LZVNQBAJWGTC.ppt [\310\243\310\257 \270\360\265\345])

Similar documents
Microsoft PowerPoint - 06-Chapter09-Event.ppt

오버라이딩 (Overriding)

슬라이드 1

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Cluster management software

운동시뮬레이션 강의 소개

10장.key

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

No Slide Title

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

JAVA PROGRAMMING 실습 08.다형성

gnu-lee-oop-kor-lec10-1-chap10

gnu-lee-oop-kor-lec06-3-chap7

PowerPoint Presentation

제11장 프로세스와 쓰레드

PowerPoint Presentation

Cluster management software

<4D F736F F F696E74202D20C1A63230C0E520BDBAC0AE20C4C4C6F7B3CDC6AE203128B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint 프레젠테이션

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

제8장 자바 GUI 프로그래밍 II

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

PowerPoint 프레젠테이션

Microsoft PowerPoint - 2강

Design Issues

PowerPoint Presentation

Network Programming

강의자료

<4D F736F F F696E74202D205B4A415641C7C1B7CEB1D7B7A1B9D65D3130C0E5C0CCBAA5C6AEC3B3B8AE>

PowerPoint Presentation

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Microsoft PowerPoint - EEL2 Lecture10 -Swing and Event Handling.pptx

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Template

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - ÀÚ¹Ù08Àå-2.ppt

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Chap12

슬라이드 1

Microsoft PowerPoint - 14주차 강의자료

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

public class FlowLayoutPractice extends JFrame { public FlowLayoutPractice() { super("flowlayout Practice"); this. Container contentpane = getcontentp

Java Programing Environment

슬라이드 1

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint 프레젠테이션

Cluster management software

Microsoft PowerPoint - lec09_12.ppt [호환 모드]

Microsoft PowerPoint - Java7.pptx

PowerPoint 프레젠테이션

PowerPoint Presentation

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

Microsoft PowerPoint 자바-AWT컴포넌트(Ch8).pptx

9장.key

歯NetworkKawuiBawuiBo.PDF

11장.key

PowerPoint Presentation

Microsoft PowerPoint - Java-03.pptx

Spring Boot/JDBC JdbcTemplate/CRUD 예제

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

Microsoft PowerPoint - 10장

PowerPoint Presentation

No Slide Title

슬라이드 1

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

PowerPoint Presentation

슬라이드 1

Cluster management software

PowerPoint 프레젠테이션

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint Presentation

JAVA PROGRAMMING 실습 07. 상속

ch09

Microsoft Word - java19-1-final-answer.doc

자바GUI실전프로그래밍2_장대원.PDF

슬라이드 1

Microsoft PowerPoint - Lect04.pptx

PowerPoint Template

No Slide Title

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

JVM 메모리구조

Microsoft PowerPoint - java2 [호환 모드]

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - java1-lecture6.ppt [호환 모드]

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

설계란 무엇인가?

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

슬라이드 1

Microsoft PowerPoint 장강의노트.ppt

Transcription:

GUI 인터페이스의이벤트

학습목표 윈도우환경에서작성된 GUI 인터페이스의이벤트개념을이해한다. 다양한컴포넌트에대한이벤트를처리한다

이벤트란? 자바이벤트란 사용자가키보드, 마우스등의장치로부터 AWT 컴포넌트에발생시키는모든사건을의미 이벤트주도형프로그램은사용자로부터발생된이벤트를처리하여사용자와상호작용을가능하게함 자바이벤트모델 컴퓨터 키보드 운영체제 마우스 이벤트객체자바가상머신이벤트소스객체이벤트리스너객체애플리케이션

이벤트처리과정 Mouse Click addactionlistener () 3 1 4 ActionEvent 응용프로그램객체 5 2 addactionlistener () EventListener 객체 1 이벤트소스가되는객체에게이벤트리스너객체를삽입 2 리스너객체는하나이상삽입가능 3 삽입된객체에한해서이벤트소스객체에마우스클릭등과같은외부이벤트가발생 45 해당이벤트소스객체를만들고, 이를리스너객체로등록한객체들모두에게이벤트객체를전달하는메소드를호출

import java.awt.*; import java.awt.event.*; public class ButtonPress extends Frame { Button b1, b2; Label lbl; public ButtonPress(String str){ super(str); setlayout(new FlowLayout()); b1 = new Button(" 시작 "); b2 = new Button(" 종료 "); lbl = new Label(" 초기상태를보여줍니다."); ButtonHandler bh = new ButtonHandler(lbl); b1.addactionlistener(bh); b2.addactionlistener(bh); add(b1); ButtonPress.java Button 객체를생성한다. 이벤트핸들러객체를생성한다. 이벤트소스 (b1 버튼 ) 와핸들러를연결한다. add(b2); add(lbl); addwindowlistener(new WinListener()); // 프레임과핸들러연결 이벤트핸들러와연결된버튼을프레임에부착한다. public static void main(string args[]){ ButtonPress fr = new ButtonPress(" 버튼이벤트예제 "); fr.setsize(250, 130); fr.setvisible(true); class WinListener extends WindowAdapter { public void windowclosing(windowevent we){ System.exit(0);

ButtonPress.java class ButtonHandler implements ActionListener { 이벤트핸들러 Label label; public ButtonHandler(Label lbl){ label = lbl; 마우스가눌려지면자동으로처리되는메소드. ActionEvent 객체 ae는자동으로생성된다. public void actionperformed(actionevent ae){ Button b = (Button)ae.getSource(); // b는눌려진버튼의객체이다. if(b.getlabel().equals(" 시작 ")) 눌려진버튼의이름을화면에출력한다. label.settext(" 시작버튼이눌려졌습니다."); else if(b.getlabel().equals(" 종료 ")) label.settext(" 종료버튼이눌려졌습니다."); 실행결과

이벤트클래스계층구조 사용자가 GUI 컴포넌트에특정한행위를취함으로서발생하기때문에컴포넌트의종류에따라서발생하는이벤트가다를수있음 이벤트클래스의계층구조

컴포넌트별이벤트발생

ActionEvent 클래스 버튼이눌려졌거나, 리스트항목이선택되었을때또는메뉴의한항목이선택되었을때, 자동적으로객체를생성시키는클래스 메서드

AdjustmentEvent 클래스 AdjustmentEvent 클래스는스크롤바의위치를이동시키면자동적으로객체를생성시키는클래스 메서드

ComponentEvent 클래스 ComponentEvent 클래스는컴포넌트가감춰지거나, 감춰진상태에서다시나타날때, 이동하였을때, 크기를조정하였을때자동적으로객체를생성시키는클래스 메서드 Component getcomponent()

ContainerEvent 클래스 컨테이너에컴포넌트가추가되거나제거될때자동적으로객체를생성시키는클래스 메서드

FocusEvent 클래스 마우스포인터가컴포넌트영역에진입하거나나왔을때자동적으로객체를생성시키는클래스 컴포넌트가마우스의초점 (focus) 을획득하거나초점을잃었을때발생

InputEvent 클래스 InputEvent Component 클래스로부터상속받은추상클래스이며, 하위클래스로서 KeyEvent 과 MouseEvent 클래스를가진다. 메서드

ItemEvent 클래스 체크박스나리스트항목이선택되었을때또는메뉴의한항목이선택되었거나선택된항목이해제될때자동적으로객체를생성시키는클래스 메서드

KeyEvent 클래스 키보드로부터입력이일어날때자동적으로객체를생성시키는클래스 메서드 char getkeychar()

MouseEvent 클래스 사용자가마우스를누를때, 클릭할때또는드래그할때자동적으로객체를생성시키는클래스 메서드

WindowEvent 클래스 윈도우가활성화되거나아이콘화될때또는닫혀질때자동적으로객체를생성시키는클래스 메서드 Window getwindow()

이벤트핸들러 이벤트핸들러는사용자가컴포넌트에발생시킨이벤트를처리하는메소드를포함한클래스 자바에서이러한클래스 ( 이벤트핸들러 ) 는사용자가임의로작성하는것이아니라, AWT 컴포넌트에서발생가능한이벤트를처리하는메소드를미리정의해놓은리스너인터페이스를이용함 Button 컴포넌트에마우스가눌려졌을때는 ActionListener 리스너인터페이스를통해처리 모든 Event 클래스에해당하는 Listener 인터페이스가존재함

ActionListener 예 ActionListener.java public interface ActionListener { public void actionperformed(actionevent ae); Button 컴포넌트가눌려졌을때이메서드를오버라이딩하여처리되는기능을작성한다. 매개변수로 ActionEvent 클래스의객체가전달된다. 따라서구현된메소드에서는 ActionEvent 클래스에서정의한메서드의사용이가능하다. ButtonPressEvent.java class ButtonPressEvent implements ActionListener { public void actionperformed(actionevent ae) System.out.println(ae.getActionCommand()+" 버튼이눌려졌습니다."); 사용자가마우스를누르면자동적으로 ActionEvent 객체 ae 가생성되고, ButtonPressEvent 클래스의 actionperformed() 메서드를실행한다. 따라서 ActionEvent 클래스에서지원하는 getactioncommand() 메서드를호출할수있다.

이벤트프로그램작성 별도로이벤트핸들러 ( 클래스 ) 를작성하는방법 이벤트핸들러를이벤트소스에포함하도록클래스를작성하는방법 Adapter 클래스를사용하는방법 내부클래스를이용하는방법

별도이벤트핸들러작성 이벤트핸들러를별도의클래스로작성하여다른클래스의컴포넌트에서발생된이벤트를처리하는방법 프로그래밍과정 1 단계 : 이벤트컴포넌트의선정및처리할이벤트결정, 예를들어마우스가버튼객체에눌려진이벤트를처리하기위해서는 ActionEvent 를선택 2 단계 : 이벤트핸들러 ( 클래스 ) 의프로그래밍 3 단계 : 이벤트소스와이벤트핸들러 ( 클래스 ) 의연결

이벤트핸들러프로그래밍 이벤트클래스에해당하는리스너인터페이스를구현한이벤트핸들러를작성. 예를들면, 마우스가 Button 컴포넌트에눌려졌을때 MouseListener 인터페이스를이용 구현예 ButtonPressEvent.java class ButtonPressEvent implements MouseListener { Button 객체를누르면자동으로실행되는메소드. public void mousepressed(mouseevent me){ System.out.println("( "me.getx()+","+me.gety()+" ) 좌표가눌려졌습니다."); MouseEvent 클래스에서지원하는메소드 public void mouseclicked(mouseevent me) // 최소한 { 로표현해야한다. public void mouseentered(mouseevent me){ // { 이없으면추상메소드이다. public void mouseexited(mouseevent me){ public void mousereleased(mouseevent me){

이벤트소스와이벤트핸들러연결 두번째단계에서작성한이벤트핸들러를사용하기위해서는이벤트소스와이벤트핸들러를연결시켜야함. 이러한연결작업은 addxxxlistener() 메소드를사용. 여기서 XXX는이벤트클래스의이름 연결과정 (Button 컴포넌트연결 ) 1단계 : 이벤트소스에해당하는객체를생성한다. 예 ) Button button = new Button(); 2단계 : 이벤트핸들러로부터객체를생성한다. 예 ) ButtonPressEvent be = new ButtonPressEvent(); 3단계 : 이벤트소스와이벤트핸들러를 [ 이벤트소스객체.addXXXListener ( 이벤트핸들러객체 )] 의형식에의하여연결한다. 예 ) button.addactionlistener(be); 4단계 : 마지막으로 add() 메소드를사용하여이벤트소스객체를관련된프레임에등록한다. 예 ) add(button); // 현재의프레임에 button 객체를등록한다.

import java.awt.*; import java.awt.event.*; public class ButtonPress extends Frame { Button b1, b2; Label lbl; public ButtonPress(String str){ super(str); setlayout(new FlowLayout()); b1 = new Button(" 시작 "); b2 = new Button(" 종료 "); lbl = new Label(" 초기상태를보여줍니다."); ButtonHandler bh = new ButtonHandler(lbl); b1.addactionlistener(bh); b2.addactionlistener(bh); add(b1); ButtonPress.java Button 객체를생성한다. 이벤트핸들러객체를생성한다. 이벤트소스 (b1 버튼 ) 와핸들러를연결한다. add(b2); add(lbl); addwindowlistener(new WinListener()); // 프레임과핸들러연결 이벤트핸들러와연결된버튼을프레임에부착한다. public static void main(string args[]){ ButtonPress fr = new ButtonPress(" 버튼이벤트예제 "); fr.setsize(250, 130); fr.setvisible(true); class WinListener extends WindowAdapter { public void windowclosing(windowevent we){ System.exit(0);

ButtonPress.java class ButtonHandler implements ActionListener { 이벤트핸들러 Label label; public ButtonHandler(Label lbl){ label = lbl; 마우스가눌려지면자동으로처리되는메소드. ActionEvent 객체 ae는자동으로생성된다. public void actionperformed(actionevent ae){ Button b = (Button)ae.getSource(); // b는눌려진버튼의객체이다. if(b.getlabel().equals(" 시작 ")) 눌려진버튼의이름을화면에출력한다. label.settext(" 시작버튼이눌려졌습니다."); else if(b.getlabel().equals(" 종료 ")) label.settext(" 종료버튼이눌려졌습니다."); 실행결과

MousePlay.java import java.awt.*; import java.awt.event.*; public class MousePlay extends Frame { Label lbl; public MousePlay(String str) { super(str); setlayout(new FlowLayout()); lbl=new Label( 초기상태를보여줍니다. ):; MouseHandler mh=new MouseHandler(lbl); // 핸들러객체생성 add(lbl); // 이벤트소스와핸들러연결 addmouselistener(new WinListener()); // 프레임과핸들러연결 addwindowlistener(new WinListener()); public static void main(string args[]) { MousePlay fr=new MousePlay( 마우스이벤트예제 ); fr.setsize(250, 130); fr.setvisible(true); class WinListener extends WindowAdapter { public void windowclosing(windowevent we) { System.exit(0); class MouseHandler implements MouseListener { String msg; Label label; public MouseHandler(Label lbl){ label = lbl; public void mouseclicked(mouseevent me){ msg=" 좌표 ("+me.getx()+", "+me.gety()+")"+" 에서마우스클릭 "; label.settext(msg); public void mouseentered(mouseevent me){ msg=" 마우스가프레임안으로이동 "; label.settext(msg); public void mouseexited(mouseevent me){ msg=" 마우스가프레임밖으로이동 "; label.settext(msg); public void mousepressed(mouseevent me){ msg=" 좌표 ("+me.getx()+", "+me.gety()+")"+" 에서마우스가눌려짐 "; label.settext(msg); public void mousereleased(mouseevent me){ msg=" 좌표 ("+me.getx()+", "+me.gety()+")"+" 에서마우스를릴리즈 "; label.settext(msg);

이벤트핸들러를이벤트소스에포함하도록클래스를작성하는방법 이벤트소스를포함한클래스에 이벤트핸들러를포함시켜서이벤트핸들러에서모든멤버변수를접근하는것 발생하는이벤트와관련된리스너인터페이스구현

EventIncluding.java import java.awt.*; import java.awt.event.*; public class EventIncluding extends Frame implements ActionListener { Button b1, b2; Label label; public EventIncluding(String str) { super(str); setlayout(new FlowLayout()); b1 = new Button( 시작 ); b2 = new Button( 종료 ); lbl=new Label( 초기상태를보여줍니다. ):; b1.addactionlistener(this); b2.addactionlistener(this); add(b1); add(b2); add(lbl); addwindowlistener(new WinListener()); public static void main(string args[]) { MousePlay fr=new EventIncluding( 버튼이벤트예제 ); fr.setsize(250, 130); fr.setvisible(true); class WinListener extends WindowAdapter { public void windowclosing(windowevent we) { System.exit(0); public void actionperformed(actionevent ae) { Button b = (Button) ae.getstring(); if (b.getlabel() equals( 시작 )) label.settext( 시작버튼이눌려졌음 ); else if (b.getlabel() equals( 종료 )) label.settext( 종료버튼이눌려졌음 );

Adaptor 클래스를사용하는방법 리스터인터페이스사용 정의한모든메서드구현 ( 사용하지않는메서드도선언해야함 ) 해당인터페이스를구현한 Adaptor 클래스사용 사용하고자하는메서드만구현

컴포넌트이벤트처리 주요한컴포넌트에서어떤이벤트가중요한가? 각컴포넌트에서발생하는이벤트처리를어떻게 하는가? 주요컨포넌트 TextField (TextEvent, KeyEvent) Checkbox (ItemEvent) Choice (ItemEvent) Menu (ActionEvent)