网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > Java精品代码 > 正文

JAVA中事件处理机制

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

JAVA中事件处理机制是观察者模式或者说委托(授权)管理的一种。
1、在理解JAVA中事件处理机制前我们必须先理解三个重要的概念:
    事件源:产生事件的对象;
    事件处理器(监听器):负责处理事件的方法。
    事件对象:用于在事件源与事件处理器间传递信息的桥梁。
    它们之间的关系是:当事件源产生事件时,通过事件调用监听器相应的事件处理方法。
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、前面已经实现了事件处理机制模型,为了更完善点使程序有多个男孩子追,并且加入异常处理。
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();
   }
}
}
class Emotion extends EventObject
{
public Emotion(Object src)
{                            //EventObject的构造方法只有无参的构造方法
   super(src);             //所以只有显示的调用,src代表事件源
}
}
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!");
}
}
interface EventListen extends EventListener
{
void happy(Emotion e);
void unhappy(Emotion e);
}
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);
}
}

TAG: JavaJAVAjava事件处理




点击下载系统:http://www.myeducs.cn/chaxun/index.html?go=JAVA中事件处理机制&aa=%CB%D1%CB%F7%C2%DB%CE%C4
  • 上一篇资讯: 应该改进的JavaSwing2.0
  • 下一篇资讯: java垃圾回收
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师