Java事件处理机制与“恋爱关系”
2014-11-27 15:51
357 查看
J***A中事件处理机制是观察者模式或者说委托(授权)管理的一种。
1、在理解J***A中事件处理机制前我们必须先理解三个重要的概念:
事件源:产生事件的对象;
事件处理器(监听器):负责处理事件的方法。
事件对象:用于在事件源与事件处理器间传递信息的桥梁。
它们之间的关系是:当事件源产生事件时,通过事件调用监听器相应的事件处理方法。
2、通过恋爱关系模拟事件处理机制:女孩子(事件源)产生高兴或不高兴的情绪(事件对象)时,男朋友(监听器)应该怎么做。
1、确定三个类:Gril,Emotion,Boy
2、Gril:要有一个名字属性,一个男朋友的属性(不可能满大街随便找个人给听你发牌气吧),还有一个add添加男朋友的方法。还有一个remove分手的方法。
Boy:要有一个名字属性,要有happy,和unhappy的两个在女朋友找你时做相应处理的方法吧。他还要有监听器的功能,所以要实现EventListener接口吧。我们在查看到EventListener只是一个简单的标记接口,所以我们一般创建一个具体有点功能的监听接口EventListen具有happy,unhappy抽像方法,而Boy通过实现这个接口,来完成有个性的处理方法。
Emotion:是一个事件对象,凭什么它就是一个事件对象呀,它要继承EventObject吧。查帮助看下。其中有一个方法getSource,通过这个方法就可以找到事件源了吧。通过查看EventObject构造方法,没有无参的构造方法,而创建对象默认是向上调用父类无参构造方法的,这样会出现错误,所以我们必须写一个含参的调用父类构造方法。
3、Boy要根据Gril产出的不同事件对象使用不同的处理方法时,要接受事件对象(Emotion)的传入吧。即方法接收传入参数。
4、Gril:有一个发牌气的方法fire,假设她1,3,5 happy,2,4,6 unhappy,7分手。
5、前面已经实现了事件处理机制模型,为了更完善点使程序有多个男孩子追,并且加入异常处理。
Java代码
Java代码
Java代码
Java代码
Java代码
1、在理解J***A中事件处理机制前我们必须先理解三个重要的概念:
事件源:产生事件的对象;
事件处理器(监听器):负责处理事件的方法。
事件对象:用于在事件源与事件处理器间传递信息的桥梁。
它们之间的关系是:当事件源产生事件时,通过事件调用监听器相应的事件处理方法。
2、通过恋爱关系模拟事件处理机制:女孩子(事件源)产生高兴或不高兴的情绪(事件对象)时,男朋友(监听器)应该怎么做。
1、确定三个类:Gril,Emotion,Boy
2、Gril:要有一个名字属性,一个男朋友的属性(不可能满大街随便找个人给听你发牌气吧),还有一个add添加男朋友的方法。还有一个remove分手的方法。
Boy:要有一个名字属性,要有happy,和unhappy的两个在女朋友找你时做相应处理的方法吧。他还要有监听器的功能,所以要实现EventListener接口吧。我们在查看到EventListener只是一个简单的标记接口,所以我们一般创建一个具体有点功能的监听接口EventListen具有happy,unhappy抽像方法,而Boy通过实现这个接口,来完成有个性的处理方法。
Emotion:是一个事件对象,凭什么它就是一个事件对象呀,它要继承EventObject吧。查帮助看下。其中有一个方法getSource,通过这个方法就可以找到事件源了吧。通过查看EventObject构造方法,没有无参的构造方法,而创建对象默认是向上调用父类无参构造方法的,这样会出现错误,所以我们必须写一个含参的调用父类构造方法。
3、Boy要根据Gril产出的不同事件对象使用不同的处理方法时,要接受事件对象(Emotion)的传入吧。即方法接收传入参数。
4、Gril:有一个发牌气的方法fire,假设她1,3,5 happy,2,4,6 unhappy,7分手。
5、前面已经实现了事件处理机制模型,为了更完善点使程序有多个男孩子追,并且加入异常处理。
Java代码
import java.util.*; class Gril { String name; Boy b;// 男朋友的属性 public Gril(String name) { this.name = name; } public void addBoy(Boy b) throws MyHeartException // 相当注册监听器 { // 添加男朋友 if (this.b == null) { this.b = b; System.out.println("haha,I have boyfriend now"); } else { throw new MyHeartException("I have boyfriend,wait me for a week"); } } public void remove() { this.b = null; System.out.println("sorry,you never understand me!"); } public void fire() { if (b == null) System.out.println("I have not boyfriend now!"); else { Emotion e = new Emotion(this); for (int i = 1; i < 7; i++) { if (i % 2 == 0) b.unhappy(e); else { b.happy(e); } } remove(); } } }
Java代码
class Boy implements EventListen { String name; public Boy(String name) { this.name = name; } public void happy(Emotion e) { Gril g = (Gril) e.getSource(); System.out.println(name + " said :" + g.name + " you happy,I happy."); } public void unhappy(Emotion e) { Gril g = (Gril) e.getSource(); System.out.println(name + " said :" + g.name + " Do not worry!you have my too!"); } }
Java代码
import java.util.EventObject; class Emotion extends EventObject { public Emotion(Object src) { // EventObject的构造方法只有无参的构造方法 super(src); // 所以只有显示的调用,src代表事件源 } }
Java代码
import java.util.EventListener; interface EventListen extends EventListener{ void happy(Emotion e); void unhappy(Emotion e); }
Java代码
public class Test { public static void main(String[] args) { Gril g = new Gril("Anna"); Boy b1 = new Boy("Tom"); Boy b2 = new Boy("Jon"); try { g.addBoy(b1); g.addBoy(b2); } catch (Exception e) { e.printStackTrace(); } g.fire(); } } class MyHeartException extends Exception { public MyHeartException(String str) { super(str); } }
相关文章推荐
- 用Java事件处理机制实现录制回放功能
- JAVA事件处理机制小议
- Java事件处理机制-自定义事件
- Java的事件处理机制
- Java事件处理机制
- java .net MFC QT事件处理机制
- JAVA事件处理机制
- java事件处理机制(自定义事件)【转】
- java中事件处理机制
- java 事件处理机制
- 利用Java事件处理机制实现录制、回放功能
- Java事件处理机制 - 事件监听器的四种实现方式
- java事件处理机制
- java的事件处理机制
- 程序员手记:Java与C#的事件处理机制
- Flex、Java、C#、JavaFX的事件处理机制的比较
- Flex、Java、C#、JavaFX的事件处理机制的比较
- java事件处理机制--事件监听器的四种实现机制(1)
- Java与C#的事件处理机制(zt)
- Java的事件处理机制