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);
//调用接口中的dostudy方法
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;
}
}
事件监听以及事件触发的简单实现流程
最新推荐文章于 2023-04-06 16:00:38 发布