java 事件处理
Java事件处理机制:EventObject类作为描述事件信息的事件信息类的基类,由EventListener接口派生新的接口或类来作为事件接收方的类,再定义事件源类。
事件信息类的构造方法必须含有事件源参数和事件信息字符串;事件接收方的事件处理方法必须含有事件信息对象作为参数;事件源类负责事件接收方的注册,取消注册,事件触发和通知事件接收方处理事件。 嘿嘿,如有转载,请声明http://www.cnblogs.com/jinmoon/;
本实例是火灾报警后火警和学生的事件处理
import java.util.EventListener;
import java.util.EventObject;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
HuoJin t = new HuoJin();
JiaRe s = new JiaRe();
Student a=new Student();
a.addStudent(s);
s.addPeople(a);
t.addStudent(s);
s.addTeacher(t);
s.Ask();
}
}
//火警
class HuoJin implements Q_or_A_Listener{
JiaRe s = null;
public void addStudent(JiaRe s) {
if (this.s == null)
this.s = s; //注册,
}
public void removeStudent(JiaRe s) {
if (this.s == null)
return; //取消注册
this.s = null;
}
public void Q_or_A_Event(Q_or_A q){//处理事件,回答问题
System.out.println("火警 灭火");
/* String a;
int i = Integer.valueOf(q.getQ_or_A()).intValue();
System.out.println(q.getQ_or_A());
if(i>80){
a = "HuoJin 灭火";
}
else{
a = "HuoJin 工作";
}
if (this.s == null){
System.out.println("没有注册!");
return;
} //没有注册监视器,不触发事件。
Q_or_A event = new Q_or_A(this, a); //创建事件对象
Notify(event); */ //通知火警
}
private void Notify(Q_or_A event){
this.s.Q_or_A_Event(event); //调用学生的事件处理方法,传递事件对象
}
}
//学生
class Student implements Q_or_A_Listener{
JiaRe s = null;
public void addStudent(JiaRe s) {
if (this.s == null)
this.s = s; //注册
}
public void removeStudent(JiaRe s) {
if (this.s == null)
return; //从未注册过,不用取消。
this.s = null;
}
public void Q_or_A_Event(Q_or_A q){//处理事件,回答问题
System.out.println("学生 逃跑");
/* String a;
// System.out.println(q.getQ_or_A());
int i = Integer.valueOf(q.getQ_or_A()).intValue();
if(i>80){
a = "Student 逃跑";
}
else{
a = "Student 学习";
}
if (this.s == null){
System.out.println("没有注册!");
return;
} //没有注册监视器,不触发事件。
Q_or_A event = new Q_or_A(this, a); //创建事件对象
Notify(event); */ //通知学生
}
private void Notify(Q_or_A event){
this.s.Q_or_A_Event(event); //调用学生的事件处理方法,传递事件对象
}
}
//加热器类
class JiaRe implements Q_or_A_Listener{
HuoJin t = null;
Student b = null;
public void addTeacher(HuoJin t) {
if (this.t == null)
this.t = t; //申请火警
}
public void addPeople(Student t) {
if (this.t == null)
this.b = t; //申请学生
}
public void removeTeacher(HuoJin t) {
if (this.t == null)
return; //从未注册过,不用取消
this.t = null;
}
public void removePeople(Student t) {
if (this.b == null)
return; //从未注册过,不用取消
this.b = null;
}
protected void Ask() {
if (t == null)
return; //没有注册火警,不提问
String s = String.valueOf(WenDu()); //字符串转换成整形
int i = Integer.valueOf(s).intValue(); //整形转换成字符
Q_or_A event = new Q_or_A(this, s); //构造函数事件初始化
if(i>80){
System.out.println(s);
Notify(event); //处理事件,通知监视器,即接收者
} /
else{
System.out.println(s);
System.out.println("安全");
}
}
public int WenDu()
{
Scanner scanner=new Scanner(System.in);
int wendu=(int)(Math.random()*100);
return wendu;
}
private void Notify(Q_or_A event){
this.t.Q_or_A_Event(event);
this.b.Q_or_A_Event(event);
//调用火警,学生,的事件处理方法,传递事件对象
}
public void Q_or_A_Event(Q_or_A a){ //事件处理方法,接收答案
System.out.println(a.getQ_or_A());
}
}
//接口
interface Q_or_A_Listener extends EventListener { //意义就在于告诉所有的调用者,我是一个监听器。
public void Q_or_A_Event(Q_or_A event);
}
//事件信息类
class Q_or_A extends EventObject{//定义事件状态类,或称为事件信息类。用于描述事件信息
private String Q_or_A = "";
public Q_or_A( Object source, String doorState ) { //明确事件源和事件信息
super(source); // 它封装了父类EventObject的getSource方法,得到的就是事件源。
this.Q_or_A = doorState;
}
public void setQ_or_A( String doorState ) {
this.Q_or_A = doorState;
}
public String getQ_or_A() { //返回的就是事件源(即教师、即被观察者),
return this.Q_or_A;
}
}
java 事件处理的更多相关文章
- 从零开始理解JAVA事件处理机制(1)
“事件”这个词已经被滥用了.正因为“事件”的被滥用,很多人在用到事件的时候不求甚解,依样画葫芦,导致学习工作了很多年,还是不清楚什么是事件处理器.什么是事件持有者.所以,如果你对于Event这个词还是 ...
- 从零开始理解JAVA事件处理机制(2)
第一节中的示例过于简单<从零开始理解JAVA事件处理机制(1)>,简单到让大家觉得这样的代码简直毫无用处.但是没办法,我们要继续写这毫无用处的代码,然后引出下一阶段真正有益的代码. 一:事 ...
- 从零开始理解JAVA事件处理机制(3)
我们连续写了两小节的教师-学生的例子,必然觉得无聊死了,这样的例子我们就是玩上100遍,还是不知道该怎么写真实的代码.那从本节开始,我们开始往真实代码上面去靠拢. 事件最容易理解的例子是鼠标事件:我们 ...
- java事件处理机制
java中的事件机制的参与者有3种角色: 1.event object:就是事件产生时具体的"事件",用于listener的相应的方法之中,作为参数,一般存在与listerne ...
- [转]Java事件处理机制- 事件监听器的四种实现方式
原文来自http://stefan321.iteye.com/blog/345221 自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: ...
- Java事件处理机制(深入理解)
本文是关于Java事件处理机制的梳理,以及有重点的介绍一些注意点,至于基础的概念啥的不多赘述. 一.Java事件处理机制初步介绍(看图理解) 根据下图,结合生活实际,可以得知监护人可以有多个,坏人对小 ...
- Java事件处理机制- 事件监听器的四种实现方式
自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: import javax.swing.*; import java.awt.*; i ...
- java 事件处理机制:按下上下左右键控制小球的运动
/** * 加深对事件处理机制的理解 * 通过上下左右键来控制一个小球的位置 */package com.test3;import java.awt.*;import javax.swing.*;im ...
- java事件处理机制(自定义事件)
java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中 2.event sourc ...
随机推荐
- 用python爬取微博数据并生成词云
很早之前写过一篇怎么利用微博数据制作词云图片出来,之前的写得不完整,而且只能使用自己的数据,现在重新整理了一下,任何的微博数据都可以制作出来,放在今天应该比较应景. 一年一度的虐汪节,是继续蹲在角落默 ...
- Apache和Tomcat整合(一个Apache 不同域名处理多个不同业务)
一.简介 在项目中,几乎任何一个项目都包括静态资源和动态请求两大部分.特别对于门户网站这样的项目,静态内容资源会更多,我们使用一般的 Tomcat 部署时,Tomcat 对静态资源的处理能力比较慢,至 ...
- 删除链表中倒数第n个节点
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点. 样例 给出链表1->2->3->4->5->null和 n = 2. 删除倒数第二个节点之后,这个链表将变成1 ...
- A strange lift
Problem Description There is a strange lift.The lift can stop can at every floor as you want, and th ...
- 坦言spring中事务、重试、异步执行注解
一.@Transaction 我们再编码过程中,大量使用到这个注解.一般情况下,@Transaction使用默认注解可以完成90%的功能,下面会针对一些特殊场景下,@Tansaction的使用注意 1 ...
- 五:用JAVA写一个阿里云VPC Open API调用程序
用JAVA写一个阿里云VPC Open API调用程序 摘要:用JAVA拼出来Open API的URL 引言 VPC提供了丰富的API接口,让网络工程是可以通过API调用的方式管理网络资源.用程序和软 ...
- hibernate flushMode 错误
1 十一月 15, 2017 10:13:36 上午 org.apache.struts2.dispatcher.Dispatcher error 2 严重: Exception occurred d ...
- spring配置文件一般结构
xml schema:schema在文档根节点当中通过xmlns对文档当中的命名空间进行申明,第三行代码定义了默认命名空间用于spring bean的定义.xsi命名空间用于为每个文档中指定 ...
- [转载] 应用于负载均衡的一致性哈希及java实现
转载自http://blog.csdn.net/haitao111313/article/details/7537799 这几天看了几遍一致性哈希的文章,但是都没有比较完整的实现,因此试着实现了一下, ...
- Python闭包
1.概述 闭包是在其词法上下文中引用自由变量的函数. >>> def foo(): ... m=3 ... n=5 ... def bar(): ... a=4 ... return ...