Java 事件处理机制

Java 中的事件角色有三个:
eventt object: 就是事件产生时具体的“事件”,用于listener的相应方法中,作为参数,一般存在于listenter的方法之中。
event source: 具体接受事件的实体,比如说,点击一个按钮,那么button就是enent source。
event listener: 事件监听器,当有其对应的 event  object产生的时候,它就调用相应的方法进行处理。
                       这种方式也被称为方法回调(callback).

实例:
package com.JavaEventProess;
import java.util.EventObject;
import java.util.EventListener;
import java.util.ArrayList;
import java.util.List;

//事件类
class FireEvent extends EventObject{
 //定义事件流对象
 private Object eventSources;
 //构造方法
 public FireEvent(Object obj){
  super(obj);
  this.eventSources = obj;
 }
 //获得事件源
 public Object getEventSources(){
  return eventSources;
 }
}

//事件监听器接口
interface Listener extends EventListener{
 //事件方法
 public void listen(FireEvent e);
}

//事件监听器实现类
class FireListener implements Listener{

 @Override
 public void listen(FireEvent e) {
  // TODO Auto-generated method stub
  System.out.println("房子着火啦!");
 }
}

//事件源房子类

class House{
 //定义标示
 private boolean flag = false;
 //监听器列表
 private List listeners = new ArrayList();
 //获得标示
 public boolean getFlag(){
  return flag;
 }
 //设置标示
 public void setFlag(boolean flag){
  this.flag = flag;
  if(flag){
   //通知
   ntf();
  }
 }
 //添加监听器
 public void addListener(Listener l){
  listeners.add(l);
 }
 //获得监听器
 public List getListeners(){
  return listeners;
 }
 //通知方法
 public void ntf(){
  //遍历监听器
  for(int i=0; i<listeners.size();i++){
   //获得监听器
   Listener l = (Listener)listeners.get(i);
   //监听
   l.listen(new FireEvent(this));
  }
 }
}

//测试类
public class JavaEventProess {
 public static void main(String[] args){
  //事件源房子
  House h = new House();
  //添加监听器
  h.addListener(new FireListener());
  //匿名内部类实现
  h.addListener(new Listener(){

   @Override
   public void listen(FireEvent e) {
    // TODO Auto-generated method stub
    System.out.println("冒烟啦!");
   }
   
  });
  h.setFlag(true);
 }
}

控制台运行输出:
房子着火啦!
冒烟啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shinobi_Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值