제7장 이벤트 프로그래밍.

Slides:



Advertisements
Similar presentations
Chap02 자바환경과 자바 프로그램 Section 1 : 자바 개발 환경 Section 2 : 자바 통합 환경 Section 3 : 자바 응용 프로그램과 애플릿 프로그램 Section 4 : 자바 응용 프로그램 Section 5 : 자바 애플릿 프로그램.
Advertisements

자바 5.0 프로그래밍.
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
6장 java.applet.Applet의 네트워크 메쏘드들
명품 JAVA Essential.
- 계산기 GUI 구성하기 - 조원: 박강국 오정은 이귀식 김도윤 안영진.
Ch.22 Command Pattern 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
9장. 스윙 프로그래밍.
GUI 이벤트, 이벤트 리스너와 이벤트 소스 그림 그리기 내부 클래스
명품 JAVA Essential.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
7장 배열 ③.
레이아웃 관리자 스윙 구성요소 비트박스 프로그램
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
명품 JAVA Essential.
제8장 쓰레드 프로그래밍.
J2ME(Java 2 Micro Edition) 무선 장치용 UI의 핵심 컴포넌트
명품 JAVA Programming.
Chap14 스윙(SWING) 14.1 스윙 컴포넌트 14.2 컴포넌트의 이벤트 처리
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
제 4 장 클래스 작성 Lab 4- 2.
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
9장 AWT(1).
Lesson 12. 사용자 인터페이스(AWT) - 1
Lesson 11. 이벤트.
프로그래밍언어론 JAVA2 애플릿과 Java 2D 2001년 11월 15일 송 영 자.
2. 자바 애플릿.
Power Java 제4장 자바 프로그래밍 기초.
10장 객체-지향 프로그래밍 II ©창병모.
Power Java 제19장 배치 관리자(Layout Manager).
Choi Younghwan CSE HUFS
java.awt 패키지의 단순 컴포넌트와 이벤트 처리
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
Chapter 12. Awt와 Swing Chapter 13. 배치 관리자 Chapter 14. 이벤트 관리자
Java로 배우는 디자인패턴 입문 Chapter 22. Command 명령을 클래스로 만든다
Swing 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼.
자바 5.0 프로그래밍.
고수준 사용자 인터페이스 프로그래밍 Lecture #4.
이벤트 프로그래밍 안혜선.
목 차 1. swing component 특징 및 관련 packages
Java Seminar Chapter 4.
10장 예외 Lab 10-2.
5장 조건과 반복 ③.
명품 Java Programming.
명품 JAVA Essential.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
메모장 구동.
9장 AWT(1).
GUI 프로그래밍과 AWT 컴퓨터 공학실험(I) 인공지능 연구실.
명품 JAVA Programming 제 15 장 애플릿과 멀티미디어.
Lesson 10. 애플릿과 그래픽.
Visual Basic 기초 1 목표: 컴퓨터기반제어에 관련된 학습을 하기 전에 Visual Basic의 기초를 살펴본다.
4장 Random Number 프로그래밍 언어 실험실 석사 3학기 박중기
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
Chap10 다중 스레드 Section 1 : 스레드 개요 Section 2 : Thread 클래스와 스레드 생명주기
JAVA WINDOW PROGRAMMING
Java Chapter 4 ~ 주차.
제8장 쓰레드 프로그래밍.
제 4 장 클래스 작성 Lab 4- 2.
Outline 클래스의 해부 캡슐화(Encapsulation) 메쏘드의 해부 그래픽 객체(Graphical Objects)
GUI 프로그래밍과 AWT 컴퓨터 공학실험(I) 인공지능 연구실.
제8장 쓰레드 프로그래밍.
11장 다형성과 추상 클래스, 인터페이스 Section 1 객체의 형 변환 Section 2 연산자 Section 3 다형성
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
5장 조건과 반복 ③.
Chapter2 : 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합개발환경(IDE)
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

제7장 이벤트 프로그래밍

7.1이벤트-구동 프로그래밍

이벤트-구동 프로그래밍 마우스 버튼 클릭, 더블 클릭, 마우스 이동 등에 응답하는 형태로 작성하는 프로그래밍 윈도우 환경에서는 대부분의 응용프로그램이 이벤트-구동 프로그래밍 방식으로 작성된다. 일반 프로그램 이벤트-구동 프로그램

이벤트-구동 프로그래밍 GUI 프로그램은 컴포넌트에서 발생된 이벤트를 처리해야 한다. GUI 프로그램 구성 이벤트 리스너 마우스 클릭과 같은 사용자 액션을 알리는 시그널. 리스너 컴포넌트로부터 발생된 이벤트를 기다리고 처리한다. 클래스 형태로 정의된다. GUI 프로그램 구성 the code that presents the GUI to the user the listeners that wait for events to occur the specific code that is executed when events occur

GUI 프로그램 모델 이벤트 리스너 이벤트 처리 리스너 등록 GUI 컴포넌트 이벤트 처리 코드 이벤트 효과

이벤트 리스너 Listener 인터페이스 이벤트 리스너(처리기) 각 이벤트에 대해 정의되어 있다. 각 Listener 인터페이스는 이벤트 처리에 필요한 추상 메소드를 포함하고 있다. 이벤트 리스너(처리기) 특정 Listener 인터페이스를 구현한 클래스 형태로 작성한다. 이벤트 리스너(처리기)는 GUI 컴포넌트에 등록(add)해야 한다. 컴포넌트에서 이벤트가 발생하면 해당 이벤트 리스너의 해당 메소드가 수행된다.

리스너 등록 하나의 컴포넌트에 여러 개의 리스너 등록 하나의 리스너를 여러 컴포넌트들에 등록 Listener1 GUI Component Listener2 GUI Component 1 Listener1 GUI Component 2

7.2 AWT 이벤트

AWT 이벤트 종류

AWT 이벤트 종류

예:버튼에서 액션 이벤트를 처리 ActionListener 인터페이스를 구현해야 한다. actionPerformed() 메소드를 구현해야 한다. ActionListener 인터페이스를 구현한 클래스(이벤트 리스너)를 버튼에 등록해야 한다. 버튼 클릭이 발생하면 등록된 이벤트 처리기 클래스의 actionPerformed() 메소드가 호출되어 실행된다.

리스너 구현 및 등록 컴포넌트에 이벤트 리스너(처리기) 등록 Listener 인터페이스를 구현한 이벤드 처리기를 addXXXListener() 메소드를 이용해 등록한다. Listener 인터페이스를 미리 구현한 Adapter 클래스가 존재하는 경우 상속을 받아서 원하는 함수만 새로 정의하면 된다.

리스너 인테페이스 및 메소드

리스너 인테페이스 및 메소드

ActionEvent 버튼을 마우스로 클릭하면 ActionEvent가 발생 예제 : ButtonAppletD.java ………. 5 public class ButtonAppletD extends Applet implements ActionListener { 6 Button button1,button2,button3; 7 String msg = ""; 8 9 public void init() { 10 button1 = new Button("One"); 11 button1.addActionListener(this); 12 button1.setActionCommand("One"); …………. 27 public void actionPerformed (ActionEvent e) { 28 String cmd = e.getActionCommand(); 29 if(cmd.equals("One")) { 30 msg = "One"; 31 } else if(cmd.equals("Two")) { 32 msg = "Two";

ActionEvent 텍스트 필드에서 엔터 키를 입력하면 ActionEvent 발생 예제 : TextFieldAppletD.java ………. 5 public class TextFieldAppletD extends Applet implements ActionListener { 6 TextField tf1,tf2; 7 8 public void init() { 9 setLayout(new BorderLayout()); 10 tf1 = new TextField("How are you ?", 10); 11 tf1.addActionListener(this); ……. 20 public void actionPerformed(ActionEvent e) { 21 System.out.println(e.getActionCommand()); 22 if(e.getSource() instanceof TextField) { 23 TextField t = (TextField) e.getSource(); 24 if(t == tf1) { 25 String msg = tf2.getText(); ………...

ItemEvent ItemEvent 체크박스 ItemEvent 처리 ItemListener 인터페이스 ItemListener 인터페이스를 구현한 이벤트 처리기를 addItemListener() 메소드를 이용해서 등록해야 한다. ItemListener 인터페이스 itemStateChanged() 메소드 체크박스 체크박스를 선택하는 경우에 ItemEvent가 발생

ItemEvent 예제 : CheckboxAppletD.java 1 import java.awt.*; 2 import java.awt.event.*; 3 import java.applet.Applet; 4 5 public class CheckboxAppletD extends Applet implements ItemListener { 6 Checkbox check1, check2, check3 ; 7 String msg = ""; 8 9 public void init() { 10 setLayout(new FlowLayout(FlowLayout.RIGHT)); 11 check1 = new Checkbox("One"); 12 check1.addItemListener(this); 13 check2 = new Checkbox("Two"); 14 check2.addItemListener(this); ……….

ItemEvent 22 public void itemStateChanged(ItemEvent e) { 23 if(e.getItem().equals("One")) { 24 msg = "Hello ?"; 25 } else if(e.getItem().equals("Two")) { 26 msg = (String)e.getItem(); 27 } else if(e.getItem().equals("Three")) { 28 if(e.getStateChange() == ItemEvent.SELECTED) { 29 msg = e.getItem() + " is selected."; 30 } else { 31 msg = e.getItem() + " is deselected."; 32 } 33 } 34 repaint(); 35 } ………...

ItemEvent 라디오 버튼을 선택하는 경우에 ItemEvent가 발생 예제 : RadioButtonD.java …... 5 public class RadioButtonD extends Applet implements ItemListener { 6 CheckboxGroup cbg; 7 Checkbox check1, check2, check3; 8 String msg = ""; 9 10 public void init() { 11 cbg = new CheckboxGroup(); 12 add(check1 = new Checkbox("One",cbg,true)); 13 check1.addItemListener(this); 14 add(check2 = new Checkbox("Two",cbg,false)); ……… 20 public void itemStateChanged(ItemEvent e) { 21 msg = (String) e.getItem(); 22 repaint(); 23 }

ItemEvent 리스트의 아이템을 더블 클릭하는 경우에는 ActionEvent가,한번 클릭하는 경우에는 ItemEvent가 발생한다. 예제 : ListAppletD.java 1 import java.awt.*; 2 import java.awt.event.*; 3 import java.applet.Applet; 4 5 public class ListAppletD extends Applet implements ActionListener, ItemListener { 6 List list; 7 String msg = ""; 8 9 public void init() { 10 list = new List(3, true); 11 list.addActionListener(this); 12 list.addItemListener(this); 13 list.add("One"); ……...

ItemEvent 20 public void actionPerformed(ActionEvent e) { 21 msg = (String) e.getActionCommand(); 22 repaint(); 23 } 24 25 public void itemStateChanged(ItemEvent e) { 26 Component source = (Component) e.getSource(); 27 if(e.getStateChange() == ItemEvent.SELECTED) 28 if(source instanceof List) 29 List l = (List) source; 30 msg = l.getItem(((Integer)e.getItem()).intValue()) + " is selected."; 31 } 32 }else { 33 msg = e.getItem() + " is deselected."; 34 } 35 repaint(); 36 } ……...

WindowEvent WindowEvent는 다이얼로그/프레임/윈도우에서 발생할 수 있다. 예제 : FrameED.java 1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class FrameED extends Frame implements ActionListener { 5 Button exit; 6 7 public FrameED() { 8 super(); 9 add("South", exit = new Button("exit")); 10 exit.addActionListener(this); 11 exit.setActionCommand("exit"); 12 addWindowListener(new WindowHandler()); ……...

WindowEvent 17 public void actionPerformed(ActionEvent e) { 18 String cmd = e.getActionCommand(); 19 if(cmd.equals("exit")) { 20 setVisible(false); 21 dispose(); 22 System.exit(0); 23 } 24 } 25 26 public class WindowHandler extends WindowAdapter { 27 public void windowClosing(WindowEvent e) { 28 Window w = e.getWindow(); 29 w.setVisible(false); 30 w.dispose(); 31 System.exit(0); 32 } 33 } ……….

MouseEvent 마우스 이벤트의 형태 마우스 이벤트 프로그래밍 마우스 클릭과 관련된 형태 마우스 이동에 관한 것 MouseListener 인터페이스에서 관리 마우스 이동에 관한 것 MouseMotionListener 인터페이스에서 관리 마우스 이벤트 프로그래밍 MouseListener 인터페이스와 MouseMotionListener 인터페이스는 모두 많은 메소드들을 선언하고 있다. 편의를 위해 각각 MouseAdapter와 MouseMotionAdapter 클래스들을 제공한다. 프로그래머는 인터페이스를 직접 구현하지 않고 두 클래스를 상속 받아서 이벤트 처리기를 작성할 수 있다.

MouseEvent 예제 : DrawRecD.java ……….. 5 public class DrawRecD extends Applet { 6 int startX, startY, w, h; 7 8 public void init() { 9 addMouseListener(new MouseEventHandler()); 10 addMouseMotionListener(new MouseMotionHandler()); 21 public class MouseMotionHandler extends MouseMotionAdapter { 22 public void mouseDragged(MouseEvent e) { 23 w = Math.abs(startX - e.getX()); 29 public class MouseEventHandler extends MouseAdapter { 30 public void mousePressed(MouseEvent e) { 31 startX = e.getX(); 32 startY = e.getY(); 33 }

7.3 GEditor JDK 1.1 이벤트 모델을 이용해서 그래픽 에디터를 만드는 예제 프로그램 버튼, 라벨, 텍스트영역, 텍스트필드 모양을 그려주는 그래픽 에디터 GEditor 에서는 각 그림들의 이동과 크기 변경이 가능

7.3 GEditor EDrawable 인터페이스 GEDrawableRectangle 클래스 그래픽 에디터에서 그림을 핸들링하기 위한 기본적인 메소드들을 선언 GEDrawableRectangle 클래스 그래픽 에디터에서 가장 많이 사용될 수 있는 그림 클래스 Bbutton, Blabel, BtextArea, BtextField 클래스 버튼, 라벨, 텍스트 영역, 텍스트 필드 모양을 그려주기 위한 클래스 GEditorCanvas 클래스 그림을 그려주는 캔버스 영역 GEditor 클래스 각 클래스를 모아 작성한 그래픽 에디터 GEditor 예제 프로그램은 간단하지만, 그래픽 에디터나 인터페이스 빌더 등의 응용 분야에 적용될 수 있을 것이다. 프로그램 Text pp349-367