事件监听以及事件触发的简单实现流程

2014-11-24 07:14:42 · 作者: · 浏览: 6
package demo;

public class Demo2 {
	public static void main(String[] args) {
		//创建被监听的类
		Student student=new Student();
		//给目标对象添加监听
		student.addStudentListener(new StudentListener() {
			@Override
			public void doStudy(Event e) {
				//重写监听的方法
				System.out.println("监听是否学习................"+e.getStudent());
			}
			@Override
			public void doChangeName(Event e) {
				System.out.println("当改变属性name时................"+e.getStudent().getName());
			}
		});
		student.study();
		student.setName("donghongyujava");
	}
}

// 被监听的类, 事件源
class Student {
	// student的属性
	private String name;
	// 监听的对象,
	private StudentListener studentListener;
	// 类中被监听的方法
	public void study() {
		// 判断是否注册了监听
		if (studentListener != null) {
			Event e = new Event();
			e.setStudent(this);
			//调用接口中的
dos
tudy方法 studentListener.doStudy(e); } } public String getName() { return name; } public void setName(String name) { this.name = name; if(studentListener!=null){ Event e=new Event(); e.setStudent(this); studentListener.doChangeName(e); } } //注册监听对象 public void addStudentListener(StudentListener studentListener){ this.studentListener=studentListener; } } // 监听者,,监听器 interface StudentListener { // 被监听后要做的是什么 // 并注册事件 public void doStudy(Event e); // 当名字被改变的事件处理 public void doChangeName(Event e); } // 事件的处理类 class Event { // 创建需要处理事件的目标类 private Student student; // 事件处理方法 // 返回被处理事件的类 public Student getStudent() { return student; } // 为被处理事件的类进行赋值的操作 public void setStudent(Student student) { this.student = student; } }