在 Java 中,**事件(Event)和监听器(Listener)是一种典型的观察者模式(Observer Pattern)**实现,常用于处理用户交互、组件通信和异步通知。
下面从概念、关系、工作流程、代码示例四个方面说明。
java.util.EventObjectpublic class MyEvent extends EventObject {
public MyEvent(Object source) {
super(source);
}
}
public interface MyListener {
void onEvent(MyEvent e);
}
关系一句话总结:
监听器监听事件,事件源触发事件,事件被监听器处理
结构关系:
事件源 (Source)
|
| 注册
v
监听器 (Listener)
|
| 触发
v
事件 (Event)
addListener() 方法import java.util.EventObject;
public class ButtonClickEvent extends EventObject {
public ButtonClickEvent(Object source) {
super(source);
}
}
public interface ButtonClickListener {
void onClick(ButtonClickEvent e);
}
import java.util.ArrayList;
import java.util.List;
public class Button {
private List<ButtonClickListener> listeners = new ArrayList<>();
public void addClickListener(ButtonClickListener l) {
listeners.add(l);
}
public void click() {
ButtonClickEvent event = new ButtonClickEvent(this);
for (ButtonClickListener l : listeners) {
l.onClick(event);
}
}
}
public class Test {
public static void main(String[] args) {
Button button = new Button();
button.addClickListener(e -> {
System.out.println("按钮被点击了!");
});
button.click(); // 触发事件
}
}
button.addActionListener(e -> {
System.out.println("按钮点击");
});
ActionEventActionListener@EventListener
public void handleEvent(MyEvent event) {
}
| 角色 | 作用 |
|---|---|
| 事件 | 描述“发生了什么” |
| 监听器 | 定义“怎么处理” |
| 事件源 | 决定“何时触发” |
如果你愿意,我也可以:
你想深入哪一块?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。