事件监听:

这是个很重要的概念,也是个很重要的模型,vb,vc都是这样用,甚至后面学的web框架也在用。    现在我们可以做很多按钮了吧,但是我们的按钮按它是没反应的,现在我们来看看怎么样才能让它有反应。

先看个例子:

import java.awt.*;
import java.awt.event.*; public class TestActionEvent {
public static void main(String[] args) {
Frame f = new Frame("Test");
Button b = new Button("Press me!");
Monitor bh = new Monitor();
b.addActionListener(bh);//把这个监听器添加到button上面
f.add(b,BorderLayout.CENTER);
f.pack();//窗口包围按钮
f.setVisible(true);
}
} class Monitor implements ActionListener {
public void actionPerformed(ActionEvent e) { //重写了接口ActionListener的这个方法
System.out.println("a Button has been pressed!");
}
}

这里的button一按,就会调用监听的这个方法,你想一下如果想让它一按就自动执行,是不是要把方法名告诉它,可是人家的button怎么知道你的方法名呢?     办法是这样的,方法实现某一接口,然后button里面也照着这个接口来调用实际当中的对象。  所以它不用知道它调的是哪个类的哪个方法,你只要实现了这个接口,它只要调用接口里的方法就行了。

事件源对象,也就是发生这件事的component的。

事件有很多种,比如按鼠标啊,拖动鼠标什么的,所以监听的这件事的要求你实现的接口也要分好多种,你想监听某件事,就得实现某个接口。 事件和监听这个事件的接口一一对应。

注册,是个动作,把自己的监听器的某一个对象,注册到我们的事件源对象上,事件源对象就知道有谁在监听我了。

还有一个细节,当某个事情发生的时候,这件事具体的信息要告诉监听器吧,比如点鼠标,点哪哪弹出个对话窗口,你要告诉监听器我特么点的坐标在哪吧。  所以当某件事发生的时候你必须把这件事封装成一个对象作为参数传递给我监听器的接口的里面那个特定的方法。

所以看这句代码:      public void actionPerformed(ActionEvent e)

这个方法有个参数e,关于这件事的具体信息系统会把它包装成对象传递到e里面。

btutton按下去的时候它发生的这件事叫做actionEvent,然后monitor实现的actionListener是这个事件对应的接口。

下面这个是一个监听器监听两个按钮:

有人会问这里这个监听器怎么区分呢?                                                                                 看这个   b2.setActionCommand("game over");     在button这个类里面有个属性叫acctionCommand,这句话就是把b2的actioncommand设成gameover。

b1没有设这个actionCommand,那么它默认的就是它的名字。那有人又问了,不能直接用名字来区分吗?可是现实中往往有这样的情况,两个按钮的名字都是"关闭"。所以这里我们有个区分方法就是把一个actionCommand设为别的另一个actionCommand也设成不同的。这是其中的一个区分方法(但不是特别好)

事件模型的介绍与Button的ActionListener的更多相关文章

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

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

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

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

  3. JavaScript DOM事件模型

    早期由于浏览器厂商对于浏览器市场的争夺,各家浏览器厂商对同一功能的JavaScript的实现都不进相同,本节内容介绍JavaScript的DOM事件模型及事件处理程序的分类. 1.DOM事件模型.DO ...

  4. ExtJS框架基础:事件模型及其常用功能

    前言 工作中用ExtJS有一段时间了,Ext丰富的UI组件大大的提高了开发B/S应用的效率.虽然近期工作中天天都用到ExtJS,但很少对ExtJS框架原理性的东西进行过深入学习,这两天花了些时间学习了 ...

  5. AWT事件模型

    1.什么是事件 1)事件------描述发生了什么的对象 [事件与异常类似,是由一个个类构成的,当一个事件产生的时候,实际上是由对应的那个事件的类来生成了一个对象,这个对象封装了与这个事件相关的信息, ...

  6. 轻松学习JavaScript二十七:DOM编程学习之事件模型

    在介绍事件模型之前,我们先来看什么是事件和什么是event对象. 一事件介绍 JavaScript事件是由訪问Web页面的用户引起的一系列操作,使我们有能力创建动态页面.事件是能够被 JavaScri ...

  7. JavaScript事件模型及事件代理

    事件模型 JavaScript事件使得网页具备互动和交互性,我们应该对其深入了解以便开发工作,在各式各样的浏览器中,JavaScript事件模型主要分为3种:原始事件模型.DOM2事件模型.IE事件模 ...

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

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

  9. jQuery的事件模型

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

随机推荐

  1. OSX: 第三方部署Profile的方法和比較

    眼下至少有三个第三方部署Profile的方法. 一个Profile Handler, 是利用Launchd对制定文件夹改变而激活的机制,把须要的profiles文件斗存放在制定目标机器的文件夹内,系统 ...

  2. Deepin-安装git

    sudo apt-get install git 命令介绍(安装软件):apt-get install 命令介绍(Debian系列以管理员运行的前缀):sudo

  3. Lync 2013 与Exchange 2013 UM&UC 集成!

     设置好对应的拨号计划.我们设置分机号码为4位: 配置好接入号码为5000: 配置自己主动助理号码为6000: 改动UM拨号模式为双模式: Set-UMService -identity Exch ...

  4. 【转载】COM文件与EXE文件的区别与联系

    COM文件是一种可执行程序的内存映象文件,它与只有16位地址线的8位机上的CP/M操作系统下的可执行程序结构相似.在COM程序执行过程中,除了调用DOS功能和 ROM BIOS 功能,以及用户特意安排 ...

  5. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  6. Effective C++学习笔记(Part Two:Item 5-12)

     近期最终把effectvie C++细致的阅读了一边,非常惊叹C++的威力与魅力.近期会把近期的读书心得与读书笔记记于此.必备查找使用,假设总结有什么不当之处,欢迎批评指正: 如今仅仅列出框架. ...

  7. UITableViewController的子控件不随着滑动

    UITableViewController的子控件不随着滑动 我们知道有时候使用UITableViewController简单便捷,省事,但是如果我们使用了addSubview,无论是[self.vi ...

  8. c语言学习-指针探究

    1:指针定义格式:格式:变量类型 *变量名用途:指针变量用于储存地址(only),也就是根据地址值,访问对应的存储空间. 注意.int *p 只能指向int类型的数据: 例: int a = 20; ...

  9. 2016/3/13 MySQL 增删查改 CRUD 用代码实现

    用代码实现数据库数据输入 T-SQL语句 查询语句分几块 ①创建表 create table Car (Code varchar(50) primary key, #primary key 主键 定义 ...

  10. Educational Codeforces Round 17 D. Maximum path DP

    题目链接:http://codeforces.com/contest/762/problem/D 多多分析状态:这个很明了 #include<bits/stdc++.h> using na ...