JAVA的授权事件模型包含三个概念:事件源,事件,事件监听器。

一,事件源:一个产生事件的对象。当这个对象的内部状态改变时,事件就会产生。一个事件源必须注册一个事件监听器已使监听器能够可以接受一个特定时间的通知。每一种事件都有它特定的注册方法,通用形式为:addTypeListener(TypeListener e)

二,事件:一个事件是描述了一个事件源的状态改变的对象。他可能通过一个人与图形用户接口的交互产生。如输入文字,点击鼠标。也可能不是由这些产生,如:一个事件可能在定时器中到期而产生。当然用户也可以自由的定义自己的事件。

注意:其中的Type可以是Key, Mouse,等。一个事件源可能允许注册多个事件监听器,也可能只允许注册一个监听器。

事件源也允许注销一个事件监听器,通用方法为:removeTypeListener(TypeListener e);

三,事件监听器:一个当事件发生时的时候被通知的对象。它有两个要求:

1,它必须在事件源中注册。

2,它必须实现接受和处理事件通知的方法。

还是来个比喻吧:你要想成为一个可以接受事件并处理事件的对象(即事件监听器),必须继承TypeListener类,其中的Type为事件类型。然后去注册你想监听的对象,并自己实现处理事件发生的方法,然后你就坐在等待事件的发生啦,哈哈!

附源程序研究用:

/*===============DemoEvent.java清单=============*/

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

public class DemoEvent extends Applet implements MouseListener, MouseMotionListener{

public String msg = "";

public int mouseX = 0, mouseY = 0;

/*

*注册事件监听器

*/

public void init() {

addMouseListener(this);

addMouseMotionListener(this);

}

/*

*下面为所有处理MouseEvent的方法,当然你可以自定义自己的方法,但不能少了这些。

*/

public void mouseMoved(MouseEvent me) {

showStatus("mouse moved at :"+me.getX() +"," + me.getY());

}

public void mouseReleased(MouseEvent me) {

mouseX = me.getX();

mouseY = me.getY();

msg = "UP";

repaint();

}

public void mouseClicked(MouseEvent me) {

mouseX = 0;

mouseY = 10;

msg = "Mouse clicked!";

repaint();

}

public void mouseEntered(MouseEvent me) {

mouseX = 0;

mouseY = 10;    ;

msg = "Mouse Entered!";

repaint();

}

public void mouseExited(MouseEvent me) {

mouseX = 0;

mouseY = 0;

msg = "Mouse Exited!";

repaint();

}

public void mouseDragged(MouseEvent me) {

mouseX = me.getX();

mouseY = me.getY();

msg = "*";

repaint();

}

public void mousePressed(MouseEvent me) {

mouseX = me.getX();

mouseY = me.getY();

msg = "Down";

repaint();

}

/*===================方法说明结束==================*/

public void paint(Graphics g) {

g.drawString(msg, mouseX, mouseY);

}

}

/*

*相关说明:这里的DemoEvent既是事件源也是事件监听器。

*

*/

/*===================DemoEvent.java清单===================*/

posted on 2005-03-31 22:44 李贝 阅读(1260) 评论(4)  编辑  收藏 所属分类: JAVA

评论

# re: JAVA授权事件模型讲解(原创)

2005-03-31 23:26

dudu

字体太大, 麻烦调整一下!  回复  更多评论

# re: JAVA授权事件模型讲解(原创)

2005-04-01 11:50

李贝

谢谢提醒啊,原来我怕别人看的累,所以搞大点的字,

已经改过来了!不行的话还请再提醒!  回复  更多评论

# re: JAVA授权事件模型讲解(原创)

2005-06-17 13:16

zorrowei

两者是一回事情吗?小可不清楚的说~!  回复  更多评论

# re: JAVA授权事件模型讲解(原创)

2005-06-17 13:17

zorrowei

我说的是:

授权事件模型与委托事情模型!  回复  更多评论

java委托事件模型_JAVA授权事件模型讲解(原创)相关推荐

  1. java中reactor模型_Java——Netty Reactor模型(转)

    1. Reactor三种线程模型 1.1. 单线程模型 Reactor单线程模型,指的是所有的IO操作都在同一个NIO线程上面完成,NIO线程的职责如下: 1)作为NIO服务端,接收客户端的TCP连接 ...

  2. java属性监听_Java event事件监听属性值变化 demo

    1.定义一个 ValueChangedEvent ValueChangedEvent用于在设置属性值的时候,触发事件. package org.teamlet; import java.util.Ev ...

  3. java表格模型_java 的表格模型是什么?

    展开全部 DefaultTableModel是常用的java表格模型. 参考代码: package com.dusd; import java.awt.BorderLayout; import jav ...

  4. Java面向事件编程_Java面向事件编程

    基于Java的基础课程给教师和学生都提出了新的挑战.虽然Java要比C++简单,但Java作为一种具有大量标准库的面向对象语言这一事实既带来了新的复杂性,同时也带来了新的机会.. 本书作为计算机科学基 ...

  5. java线程的内存模型_java多线程内存模型

    java多线程内存模型: 可见性 要实现共享变量的可见性,必须保证两点: 1.线程修改后的共享变量能够及时从工作内存刷新到主内存中: 2.其他线程能够及时把共享变量的最新值从主内存更新到自己的工作内存 ...

  6. java swing事件机制_java SWing事件调用的两种机制

    /** * java swing中事件调用的两种机制: * (一)响应机制 * (二)回调机制 */ package test; import java.awt.*; import java.awt. ...

  7. java多线程内存模型_Java多线程内存模型

    Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果.在此之前 ...

  8. java底层模型_Java I/O模型及其底层原理,夯实你的开发基础

    前言 Java I/O是Java基础之一,在面试中也比较常见,在这里我们尝试通过这篇文章阐述Java I/O的基础概念,帮助大家更好的理解Java I/O. 在刚开始学习Java I/O时,我很迷惑, ...

  9. java 继承 模型_java – 画布形状模型的继承与组合?

    对于以下模型,您更喜欢继承还是组合: >我想在画布上绘制对象,每个对象代表一个数据对象 >将其视为状态机图:椭圆表示状态,线表示它们之间的连接/转换.对象表示本身永远不会改变,即状态将始终 ...

最新文章

  1. pytorch中的torch.nn.LSTM解析
  2. 【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
  3. 用JavaScript实现的设计模式之commandline(命令行)模式
  4. 动画 制作_您希望制作的10个醒目的徽标动画
  5. mysqld --debug-sync
  6. 微信小程序 --- 动态获取input的value
  7. HTTP普及帖2:简单的HTTP(上)
  8. LocBaml for .net 4.0
  9. vue运行报错:Cannot find module 'webpack/bin/config-yargs'
  10. 网络调试分析的工具①
  11. 数据分析之--Mataplotlib入门
  12. mysql batch insert_使用batch insert解决MySQL的insert吞吐量问题
  13. uplift model增益模型相关术语概念名词汇总
  14. 美术 2.4 UV原理基础
  15. 中国车牌归属地数据库
  16. 删除yum.repos.d
  17. 基于ZigBee 的多点温度采集系统设计与实现
  18. 基于网络的思维导图工具的八个独特优点
  19. 集合转换成数组的两种方法---toArray()和toArray(T[] a)
  20. 报错ERROR:Skipping MapperFactoryBean with name 'xxxMapper' and 'xxx.xxx.xxx.mapper.xxxxxMapper'

热门文章

  1. Invalid column index (256). Allowable column range for BIFF8 is (0..255) or (‘A‘..‘IV‘)异常,处理方法记录
  2. 搜狗拼音输入法反斜杠问题
  3. 频率响应范围测试软件,关于示波器频率响应分析仪选件和伯德图测试的区别和发展分析...
  4. 彩虹外链网盘源码,是一款PHP网盘与外链分享程序
  5. 图片和视频的上传(文件上传通用)
  6. 合肥工业大学计算机学硕和专硕,合肥工业大学研究生学硕和专硕有差吗?
  7. C#墨攻IOC[转]
  8. MSSQL SERVER中易混淆的数据类型
  9. 【不看后悔系列—小白手册】超实用Python入门指南!包括学习思维导图
  10. 案例25:基于Springboot论坛管理系统设计与实现开题报告