• 1、什么是事件

1)事件------描述发生了什么的对象 [事件与异常类似,是由一个个类构成的,当一个事件产生的时候,实际上是由对应的那个事件的类来生成了一个对象,这个对象封装了与这个事件相关的信息,我们可以通过这个对象获取到事件相关的信息]。

2)事件源------事件的产生器 [比如说是一个按钮]。

3)事件处理器------接收事件、解释事件并处理用户交互的方法[注意是一个方法]。

如果用户在用户界面层执行了一个动作(鼠标点击和按键),这将导致一个事件的发生。事件是描述发生了什么的对象。存在各种不同类型的事件类用来描述各种类型的用户交互。

  • 2、事件源

事件源是一个事件的产生者。例如,在Button组件上点击鼠标会产生以这个Button为源的一个ActionEvent[可以理解为JDK给我们提供的鼠标点击按钮产生的事件,这个事件是ActionEvent这个类的对象]. 这个ActionEvent实例是一个对象,它包含关于刚才所发生的那个事件的信息的对象,这些信息包括:

1)getActionCommand - 返回与动作相关联的命令名称

2)getWhen — 返回事件发生的时间

查看JDK Doc文档中的ActionEvent类:


java.awt.event Class ActionEvent java.lang.Object java.util.EventObject java.awt.AWTEvent java.awt.event.ActionEvent public class ActionEventextends AWTEvent A semantic event which indicates that a component-defined action occurred.

[Java中的事件一般都位于 java.awt.event包下面

这个类表示一个语义上的事件,它表明了一个组件定义的动作发生了]比如点击Button,这个事件就发生了.它竟然是一个类,我们就可以通过它的对象来访问它一下的一些方法,如 etActionCommand() 和 getWhen()。

  • 3、事件处理器

事件处理器就是一个接收事件、解释事件并处理用户交互的方法。[归根结底就是一个方法,用来处理点击的动作,当点击事件发生的时候,事件处理器就会自动得到调用。]

  • JDK1.1的事件模型:委托模型

事件监听器:实现了监听器接口的类。一个监听器对象是一个实现了专门的监听器接口的类的实例。

Demo如下所示:


package com.ahueir.awt; import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; public class TestButton { public static void main(String[] args) { Frame frame = new Frame("Test Button"); Button button = new Button("Press Me!"); //增加事件处理器
button.addActionListener(new ButtonHandler()); frame.add(button, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } } class ButtonHandler implements ActionListener{ /*
* 这边为什么要给actionPerformed()传递一个ActionEvent的参数 e 呢?为什么不传递一个字符串呢?
* 原因是当我们点击了按钮,就会产生一个事件对象,这个事件对象封装了产生对象的时候所有对象的信息,
* 包括按钮上面的标签,点击产生事件发生的时间等
* 这个ActionEvent产生的对象是由底层系统帮助我们生成的类似前面所讲的异常。
* 这个对象传递给与这个事件关联的事件处理器,事件处理器得到调用,可以通过这个对象获得封装的一些信息。
*/ @Override public void actionPerformed(ActionEvent e) { System.out.println("Button is Pressed!"); String str = e.getActionCommand(); System.out.println(str); } }

编译执行结果产生一个按钮,点击这个按钮输出以下内容(这边就不截图了):

Button is Pressed!

Press Me!

【说明1】:

1)在Button对象上用鼠标进行点击时,将发送一个ActionEvent事件。这个ActionEvent事件会被使用addActionListener()方法进行注册的所有ActionListener的actionPerformed()方法接收。

2)ActionEvent类的getActionCommand()方法返回与动作相关联的命令名称。

3)以按钮的点击动作为例,将返回Button的标签。

【说明2】:

查看JDK Doc文档中的Button这个类,查看里面的方法 addActionListener()


addActionListener public void addActionListener(ActionListener l) Adds the specified action listener to receive action events from this button.

[添加一个特定的动作当监听到从这个按钮接受到的事件后]。

  • 委托模型优点

1)事件不会被意外地处理。

2)有可能创建并使用适配器(adapter)类对事件动作进行分类。

3)委托模型有利于把工作分布到各个类中。[比如说有Frame、Panel、Button三个组件,我们可以写三个事件处理器,可以针对这三个组件进行处理,点击某一个组件就对应某一个事件管理器进行处理,对应关系比较明确的]。

AWT事件模型的更多相关文章

  1. Swing与AWT在事件模型处理上是一致的。

    Swing与AWT在事件模型处理上是一致的. Jframe实际上是一堆窗体的叠加. Swing比AWT更加复杂且灵活. 在JDK1.4中,给JFRAME添加Button不可用jf.add(b).而是使 ...

  2. Swing与AWT在事件模型处理上是一致的

    Swing与AWT在事件模型处理上是一致的. Jframe实际上是一堆窗体的叠加. Swing比AWT更加复杂且灵活. 在JDK1.4中,给JFRAME添加Button不可用jf.add(b).而是使 ...

  3. 【repost】JavaScript 事件模型 事件处理机制

    什么是事件? 事件(Event)是JavaScript应用跳动的心脏 ,也是把所有东西粘在一起的胶水.当我们与浏览器中 Web 页面进行某些类型的交互时,事件就发生了.事件可能是用户在某些内容上的点击 ...

  4. jQuery的事件模型

    前几天自己着重读了jQuery1.11.1的源码,又结合了之前对DE事件模型的分析,最后也实现一个简陋的事件模型. jQuery的事件系统离不开jQuery的缓存系统. jQuery的第一代缓存是直接 ...

  5. js事件模型与自定义事件

    JavaScript 一个最简单的事件模型,需要有事件绑定与触发,还有事件删除. var eventModel = { list: {}, bind: function () { var args = ...

  6. JS事件模型小结

    三种事件模型:原始事件模型(DOM0),DOM2事件模型,IE事件模型: 不同点: 事件程序的注册(给HTML元素所对应的JS对象绑定事件) 事件传播的过程 事件模型的注册: 一.原始事件模型(没有兼 ...

  7. IE事件模型,如何给IE和非IE浏览器添加事件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title> ...

  8. Javascript事件模型系列(四)我所理解的javascript自定义事件

    被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情,公司的个人的,搞的自己心烦意乱浮躁了一 ...

  9. Javascript事件模型系列(一)事件及事件的三种模型

    一.开篇 在学习javascript之初,就在网上看过不少介绍javascript事件的文章,毕竟是js基础中的基础,文章零零散散有不少,但遗憾的是没有看到比较全面的系列文章.犹记得去年这个时候,参加 ...

随机推荐

  1. Mac OS X下:TensorBoard可视化问题

    花了1,2个小时,Tensorboard Garphs一直不显示,最后发现竟然是多了一个“=”号

  2. (转)Python中的模块循环导入问题

    本文转自: https://wiki.woodpecker.org.cn/moin/MiscItems/2008-11-25 问题 cleven <shenglipang@gmail.com&g ...

  3. JDK环境变量的配置1

    JDK环境变量的配置 ... 1.安装完JDK后配置环境变量  计算机→属性→高级系统设置→高级→环境变量   2.系统变量→新建 JAVA_HOME 变量 .变量值填写jdk的安装目录(我的安装目录 ...

  4. CCNA学习与实验指南——第2章 网络互联和参考模型

    大三下学期的这个时间段,不知道是不是社会就业的恐惧与自身前途的迷茫所带来的压力,身边的同学一个个的整天奔赴考研室学的好不努力,空荡荡的宿舍只剩我一人孑然聊聊甚是索然无味,亦或许是即将毕业的压力等接踵而 ...

  5. 设计模式之Mixin模式

    介绍 mixin模式就是一些提供能够被一个或者一组子类简单继承功能的类,意在重用其功能.在面向对象的语言中,我们会通过接口继承的方式来实现功能的复用.但是在javascript中,我们没办法通过接口继 ...

  6. 转自知乎大神---什么是 JS 原型链?

    我们知道 JS 有对象,比如 var obj = { name: 'obj' } 我们可以对 obj 进行一些操作,包括 「读」属性 「新增」属性 「更新」属性 「删除」属性 下面我们主要来看一下「读 ...

  7. 一个ssm综合小案例-商品订单管理-第一天

    项目需求分析: 功能需求:登录,商品列表查询,修改 项目环境及技术栈: 项目构成及环境: 本项目采用 maven 构建 环境要求: IDEA Version: 2017.2.5 Tomcat Vers ...

  8. 基于JWT(Json Web Token)的ASP.NET Web API授权方式

    token应用流程 初次登录:用户初次登录,输入用户名密码 密码验证:服务器从数据库取出用户名和密码进行验证 生成JWT:服务器端验证通过,根据从数据库返回的信息,以及预设规则,生成JWT 返还JWT ...

  9. JS模块化写法(转)

    一.原始写法 模块就是实现特定功能的一组方法. 只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块. function m1(){ //... } function m2(){ // ...

  10. ASP.NET记录错误日志的方式

    程序记录错误日志是一种看起来对一般用户没什么作用,但对程序开发者用处很大的东西,它能查出错误或异常的程序马迹.那么,常用的记录错误日志的方式有哪些呢? 大多数情况下使用的是 1.直接记录为txt/xm ...