在 Java 中,“事件(Event)”最常见于 GUI 编程(如 AWT / Swing / JavaFX),也广泛用于 自定义事件机制(观察者模式)。下面我分两部分讲:GUI 事件 和 自定义事件,并给出示例。
ActionEvent)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, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
| 事件 | 监听器 |
|---|---|
| 按钮点击 | ActionListener |
| 鼠标操作 | MouseListener |
| 键盘输入 | KeyListener |
| 窗口关闭 | WindowListener |
适合在 业务系统 中使用,比如“订单创建后发邮件”。
public class OrderEvent {
private String orderId;
public OrderEvent(String orderId) {
this.orderId = orderId;
}
public String getOrderId() {
return orderId;
}
}
public interface OrderListener {
void onOrderCreated(OrderEvent event);
}
import java.util.*;
public class OrderService {
private List<OrderListener> listeners = new ArrayList<>();
public void addListener(OrderListener listener) {
listeners.add(listener);
}
public void createOrder(String orderId) {
System.out.println("创建订单:" + orderId);
OrderEvent event = new OrderEvent(orderId);
for (OrderListener l : listeners) {
l.onOrderCreated(event);
}
}
}
public class Test {
public static void main(String[] args) {
OrderService service = new OrderService();
service.addListener(e ->
System.out.println("发送邮件,订单:" + e.getOrderId())
);
service.createOrder("1001");
}
}
如果你用 Spring:
@EventListener
public void handleOrderEvent(OrderEvent event) {
}
由 ApplicationEventPublisher 发布事件。
组件 + 监听器 + 事件对象事件类 + 监听器 + 发布者如果你是想了解 Swing / JavaFX / Spring 事件 的某一种,我可以专门展开讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。