事件监听:

这是个很重要的概念,也是个很重要的模型,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. 他人第三方库在linux上的安装

    1.下载tar.gz等压缩包 2.解压 3.安装 4.确保路径

  2. 基于websocket的单聊.群聊

    关于ai.baidu.com的 代码: #########################################核心代码################################### ...

  3. 打造字符界面的多媒体Linux系统

    0 环境与目标 硬件:ThinkPad R52笔记本一台. 目标:字符界面的Linux系统,同时可以看图片,听音乐,看视频,无线上网,重要的是可以听着音乐编程了! 注意:本文打造的系统主要是供一个工程 ...

  4. Form content types

    Forms in HTML documents https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4 17.13.4 Form con ...

  5. Python下的LibSVM的使用

    突然觉的笔记真的很重要,给自己省去了很多麻烦,之前在Python 3 中装过libsvm 每一步都是自己百度上面搜寻的,花费了很长时间,但是并没有记录方法.这次换了电脑,又开始重新搜寻方法,觉得太浪费 ...

  6. 实现的是Linux和Windows之间的一种共享--samba

    samba 基本配置及自定义控制 https://www.cnblogs.com/l-hh/p/9473937.html Samba简介: Samba实现的是Linux和Windows之间的一种共享, ...

  7. IJ:IntelliJ IDEA安装

    ylbtech-IJ:IntelliJ IDEA安装 响应速度快 1.返回顶部 1. 2. 3. 4. 5. 6. 7. 2. 接受协议,激活IJ返回顶部 1. 2. 3. 4. 5. 6.0. 6. ...

  8. U3D中碰撞体和刚体的关系

    1.刚体是用来接受力作用的组件: 2.碰撞体是碰撞系统用来检测碰撞的组件: 碰撞产生碰撞信息,游戏物体根据碰撞信息生成一个力作用在刚体上,刚体受力后就会产生一个速率,最终在游戏物体的运动体现出来. 也 ...

  9. form表单提交的几种方法

    form表单提交的几种方法 <form id="myform" name="myform" method="post" onsubmi ...

  10. bzoj 2087: [Poi2010]Sheep【凸包+极角排序+dp】

    首先处理处理出来哪些边能连--能把羊分成两个偶数部分的,实现是在凸包上枚举极点,极角排序,枚举凸包上点对判断两边羊的个数的奇偶即可,设可以连边为v[i][j]=1 然后设f[i][j]为从i到j个凸包 ...