在 Java 中,“事件(Event)”通常出现在 GUI 编程(如 AWT / Swing / JavaFX) 以及 事件驱动架构(如 Spring 事件) 中。虽然场景不同,但核心思想是一致的:事件源产生事件 → 监听器接收并处理事件。
下面我分层讲清楚。
Java 的事件机制基于 观察者模式:
事件源(Event Source)
产生事件的对象,比如按钮 JButton
事件对象(Event Object)
封装事件信息,比如 ActionEvent
事件监听器(EventListener)
监听并响应事件,比如 ActionListener
import javax.swing.*;
import java.awt.event.*;
public class EventDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("事件示例");
JButton button = new JButton("点我");
// 注册监听器
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击了");
}
});
frame.add(button);
frame.setSize(200, 200);
frame.setVisible(true);
}
}
执行流程:
ActionEvent 对象ActionListener.actionPerformed()在 GUI 中:
用户操作 → 事件源 → 事件对象 → 监听器方法
button.setOnAction(event -> {
System.out.println("JavaFX 按钮点击");
});
特点:
Spring 使用 ApplicationEvent:
public class UserRegisteredEvent extends ApplicationEvent {
public UserRegisteredEvent(Object source) {
super(source);
}
}
applicationEventPublisher.publishEvent(new UserRegisteredEvent(this));
@Component
public class UserListener {
@EventListener
public void handle(UserRegisteredEvent event) {
System.out.println("用户注册成功");
}
}
特点:
@Async)✅ Java 事件机制核心:
✅ 本质:
一种 松耦合的回调机制(观察者模式)
✅ 常见应用:
如果你愿意,我可以:
你更想了解哪一块?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。