<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

PowerPoint Presentation

10장.key

Microsoft PowerPoint - 06-Chapter09-Event.ppt

오버라이딩 (Overriding)

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

슬라이드 1

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Cluster management software

<4D F736F F F696E74202D20C1A63230C0E520BDBAC0AE20C4C4C6F7B3CDC6AE203128B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

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

Microsoft PowerPoint - 14주차 강의자료

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

PowerPoint 프레젠테이션

<4D F736F F F696E74202D205B4A415641C7C1B7CEB1D7B7A1B9D65D3130C0E5C0CCBAA5C6AEC3B3B8AE>

No Slide Title

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

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

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

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

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

슬라이드 1

11장.key

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 10장

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

Microsoft PowerPoint - Java-03.pptx

PowerPoint Presentation

9장.key

운동시뮬레이션 강의 소개

JAVA PROGRAMMING 실습 08.다형성

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

자바로

Java Programing Environment

Chap12

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

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

슬라이드 1

05-class.key

중간고사

Microsoft PowerPoint - java2-lecture5.ppt [호환 모드]

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

강의자료

PowerPoint Presentation

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

No Slide Title

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

10 이벤트 처리와 그래픽 프로그래밍.key

Microsoft PowerPoint - Java7.pptx

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

쉽게 풀어쓴 C 프로그래밍

연습문제이론홀수정답

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

PowerPoint Presentation

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

PowerPoint Presentation

제11장 프로세스와 쓰레드

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밊

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

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

모든스윙컴포넌트에는텍스트옆에이미지를추가로표시할수있다. ImageIcon image = new ImageIcon("image.gif"); JLabel label = new JLabel(" 이미지레이블 "); label.seticon(image);

Cluster management software

Design Issues

JTable과 MVC(Model-View-Controller) 구조 - 모델-뷰-컨트롤러구조는데이터의저장과접근에대한제공은모델이담당하고, 화면표시는뷰, 이벤트의처리는컨트롤러가하도록각역할을구분한구조이다. 즉, 역할의분담을통하여상호간의영향을최소화하고각요소의독립성을보장하여독자

PowerPoint Presentation

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

PowerPoint 프레젠테이션

쉽게

PowerPoint Presentation

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

ch09

JAVA PROGRAMMING 실습 02. 표준 입출력

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 2강

PowerPoint 프레젠테이션

DB 에데이터저장을위한입력창설계 - JLabel, JTextField, JButton 을이용한입력창설계 - 2 -

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

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

PowerPoint Template

JUNIT 실습및발표

제1장 자바 언어 소개

02 C h a p t e r Java

Cluster management software

09-interface.key

歯NetworkKawuiBawuiBo.PDF

Spring Boot/JDBC JdbcTemplate/CRUD 예제

JMF3_심빈구.PDF

Network Programming

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - [JAVA프로그래밍]9장GUI

Transcription:

Power Java 제 18 장이벤트처리 이번장에서학습할내용 이벤트처리의개요 이벤트 액션이벤트 Key, Mouse, MouseMotion 어댑터클래스 버튼을누르면반응하도록만들어봅시다.

이번장의목표 버튼을누르면버튼의텍스트가변경되게한다. 이벤트처리과정

이벤트처리과정 (1) 이벤트를발생하는컴포넌트를생성하여야한다. 이벤트처리과정 (2) 이벤트리스너클래스를작성한다.

이벤트처리과정 (3) 이벤트리스너를이벤트소스에등록한다. 이벤트리스너를컴포넌트에붙인다. 프로그램결과

이벤트처리기를어디에 (1) 별도의클래스로이벤트처리기를작성 : 앞의예제 이벤트처리기의위치 (2) 내부클래스로이벤트처리기를작성 (3) 프레임클래스가이벤트처리기도함께구현 내부클래스사용방법 만약 MyListener 라는클래스를별도의클래스로하면 MyFrame 안의멤버변수들을쉽게사용할수없다. 일반적으로 MyListener 클래스를내부클래스로만든다.

내부클래스를사용하는버전 import javax.swing.*; import java.awt.event.*; public class MyFrame extends JFrame { private JButton button; public MyFrame() { this.setsize(300, 200); this.setdefaultcloseoperation(jframe.exit_on_close); this.settitle(" 이벤트예제 "); JPanel panel = new JPanel(); button = new JButton(" 버튼을누르시오 "); button.addactionlistener(new MyListener()); panel.add(button); this.add(panel); this.setvisible(true); ( 내부클래스를사용하는버전 private class MyListener implements ActionListener { public void actionperformed(actionevent e) { if (e.getsource() == button) { button.settext(" 버튼이눌려졌습니다 "); public class MyFrameTest { public static void main(string[] args) { MyFrame t = new MyFrame(); 내부클래스

MyFrame 에서이벤트도처리하는방법 더많이사용되는방법은 MyFrame 클래스가 JFrame 을상속받으면서동시에 ActionListener 인터페이스도구현하는경우이다. MyFrame 이이벤트도처리 import javax.swing.*; import java.awt.event.*; 이벤트도처리 class MyFrame extends JFrame implements ActionListener { private JButton button; public MyFrame() { this.setsize(300, 200); this.setdefaultcloseoperation(jframe.exit_on_close); this.settitle(" 이벤트예제 "); JPanel panel = new JPanel(); button = new JButton(" 버튼을누르시오 "); button.addactionlistener(this); panel.add(button); this.add(panel); this.setvisible(true); (

MyFrame 이이벤트도처리 public void actionperformed(actionevent e) { if (e.getsource() == button) { button.settext(" 버튼이눌려졌습니다 "); public class MyFrameTest1 { public static void main(string[] args) { MyFrame t = new MyFrame(); 중간점검문제 1. 사용자가버튼을누르면무엇이발생하는가? 2. 이벤트를처리하는클래스를무엇이라고하는가? 3. 내부클래스를사용하는장점은무엇인가?

이벤트의분류 #1 이벤트의분류 #2 스윙컴포넌트에의하여지원되는이벤트는크게두가지의카테고리로나누어진다. 모든컴포넌트가지원하는이벤트 이벤트 일부컴포넌트가지원하는이벤트

모든컴포넌트가지원하는이벤트 일부컴포넌트가지원하는이벤트

Action 이벤트 사용자가버튼을클릭하는경우 사용자가메뉴항목을선택하는경우 사용자가텍스트필드에서엔터키를누르는경우

import javax.swing.*; import java.awt.color; import java.awt.event. awt *; 액션이벤트예제 class MyFrame extends JFrame { private JButton button1; private JButton button2; private JPanel panel; public MyFrame() { this.setsize(300, 200); this.setdefaultcloseoperation(jframe.exit_on_close); this.settitle(" 이벤트예제 "); panel = new JPanel(); button1 = new JButton(" 노란색 "); button1.addactionlistener(new MyListener()); panel.add(button1); button2 = new JButton(" 핑크색 "); button2.addactionlistener(new MyListener()); panel.add(button2); this.add(panel); this.setvisible(true); 액션이벤트예제 private class MyListener implements ActionListener { public void actionperformed(actionevent e) { if (e.getsource() == button1) { panel.setbackground(color.yellow); else if (e.getsource() == button2) { panel.setbackground(color.pink); public class MyFrameTest2 { public static void main(string[] args) { MyFrame t = new MyFrame();

결과화면 이벤트발생원의식별 getsource() 메소드를이용하여이벤트를발생시킨객체를식별한다. getid() 메소드를이용하여이벤트의타입을식별한다. getactioncommand() 메소드를이용하여이벤트를발생시킨컴포넌트이름을식별한다. public void actionperformed(actionevent e) { if (e.getsource () == button1){

Key 이벤트 KeyListener 인터페이스구현 KeyListener 인터페이스 메소드 설명 keytyped(keyevent e) 사용자가글자를입력했을경우에호출 keypressed(keyevent e) keyreleased(keyevent y e) 사용자가키를눌렀을경우에호출사용자가키에서손을떼었을경우에호출 키보드이벤트예제 import javax.swing.*; import java.awt.*; import java.awt.event.*; class MyFrame extends JFrame implements KeyListener { // (1) public MyFrame() { settitle(" 이벤트예제 "); setsize(300, 200); setdefaultcloseoperation(jframe.exit_on_close); JTextField tf = new JTextField(20); tf.addkeylistener(this); // (2) add(tf); setvisible(true); 키보드이벤트처리기를붙인다.

public void keytyped(keyevent e) { // (3) display(e, "KeyTyped "); 액션이벤트예제 public void keypressed(keyevent e) { display(e, "KeyPressed "); public void keyreleased(keyevent e) { display(e, "Key Pressed "); protected t void display(keyevent e, String s) { char c = e.getkeychar(); int keycode = e.getkeycode(); String modifiers = e.isaltdown() + " " + e.iscontroldown() + " " + e.isshiftdown(); System.out.println(s + " " + c + " " + keycode + " " + modifiers); 실행결과

Mouse 이벤트 MouseListener 인터페이스 메소드 mouseclicked(mouseevent e) mouseentered(mouseevent e) mouseexited(mouseevent e) mousepressed(mouseevent e) 설명 사용자가컴포넌트를마우스로클릭한경우에호출된다. 마우스커서가컴포넌트의경계안으로커서가들어가면호출된다. 마우스커서가컴포넌트의경계밖으로커서가나가면호출된다. 마우스가컴포넌트위에서눌려지면호출된다. mousereleased(mouseevent e) 마우스가컴포넌트위에서떼어지면호출된다. MouseMotion 이벤트 메소드 mousedragged(mouseevent e) 설명 마우스버튼을누른채로마우스를이동하는경우에호출된다. mousemoved(mouseevent e) 마우스버튼을누르지않고마우스를이동하는경우에호출된다.

마우스이벤트예제 import javax.swing.*; import java.awt.*; import java.awt.event.*; class MyFrame extends JFrame implements MouseListener, MouseMotionListener { public MyFrame() { settitle("mouse Event"); setsize(300, 200); setdefaultcloseoperation(jframe.exit_on_close); JPanel panel = new JPanel(); panel.addmouselistener(this); panel.addmousemotionlistener(this); add(panel); setvisible(true); 마우스이벤트처리기를붙인다. 마우스이벤트예제 public void mousepressed(mouseevent e) { display( ("Mouse pressed (# of clicks: " + e.getclickcount() + ")", e); public void mousereleased(mouseevent e) { display("mouse released (# of clicks: " + e.getclickcount() + ")", e); public void mouseentered(mouseevent e) { display("mouse entered", e); public void mouseexited(mouseevent e) { display("mouse exited", e); public void mouseclicked(mouseevent e) { display("mouse clicked (# of clicks: " + e.getclickcount() + ")", e);

마우스이벤트예제 protected void display(string s, MouseEvent e) { Sstemo System.out.println(s t + " X= " + e.getx() + " Y= " + e.gety()); public void mousedragged(mouseevent e) { display("mouse dragged", e); public void mousemoved(mouseevent e) { display("mouse moved", e); public class MyFrameTest5 { public static void main(string[] args) { MyFrame f=new MyFrame(); 실행결과

마우스의좌표를얻으려면? (x, y) MouseEvent 클래스 메소드 int getclickcount() int getx() int gety() Point getpoint() int getxonscreen() int getyonscreen() int getlocationonscreen() int getbutton() boolean ispopuptrigger() String getmousemodifierstext(int) 설명 빠른연속적인클릭의횟수를반환한다. 예를들어 2 이면더블클릭을의미한다. 이벤트가발생했을당시의 (x,y) 위치를반환한다. 위치는컴포넌트에상대적이다. 절대좌표값 (x,y) 을반환한다. 이들좌표값은가상화면에상대적이다. 어떤마우스버튼의상태가변경되었는지를반환한다. NOBUTTON,BUTTON1,BUTTON2,BUTTON3중의하나이다. 마우스이벤트가팝업메뉴를나타나게하면 true 를반환한다. 이벤트도중의수식키와마우스버튼을기술하는설명문을반환한다. 어댑터클래스 인터페이스의경우, 모든메소드를구현하여야한다. 어댑터클래스 (Adaptor Class) 를사용하면원하는메소드만을구현하는것이가능해진다 인터페이스 ComponentListener ContainerListener FocusListener KeyListener MouseListener MouseMotionListener WindowListener 어댑터클래스 ComponentAdapter ContainerAdapter FocusAdater KeyAdapter MouseAdapter MouseMotionAdapter WindowAdapter

리스너를사용하는경우 어댑터를사용하는경우

마우스이벤트예제 import java.awt.*; import java.awt.event.*; import javax.swing.jframe; class MyFrame extends JFrame { public MyFrame() { setsize(300, 200); settitle("my Frame"); addwindowlistener(new MyWindowAdaptor()); setvisible(true); 내부클래스정의 class MyWindowAdaptor extends WindowAdapter { public void windowclosing(windowevent e) { System.exit(0); 마우스이벤트예제 public class MyFrameTest6 { public static void main(string args[]) { MyFrame w = new MyFrame();

Q & A