Java 中的事件(Event)详解
事件的概念与本质
在 Java 中,事件(Event) 是表示程序状态变化或用户交互动作的对象,它封装了与特定动作相关的信息。事件是事件驱动编程的核心机制,用于在程序的不同组件之间进行通信。
事件的三要素:
事件源(Event Source):产生事件的对象(如按钮、文本框)
事件对象(Event Object):封装事件信息的对象
事件监听器(Event Listener):处理事件的对象
Java 事件模型
1. 事件分类
事件类型
描述
对应类
常见应用
动作事件
用户执行动作
ActionEvent
按钮点击、菜单选择
鼠标事件
鼠标操作
MouseEvent
点击、移动、拖拽
键盘事件
键盘操作
KeyEvent
按键、释放键
窗口事件
窗口状态变化
WindowEvent
打开、关闭、最小化
组件事件
组件状态变化
ComponentEvent
显示、隐藏、移动
2. 事件对象结构
事件对象通常继承自 java.util.EventObject,包含以下核心元素:
事件源引用:getSource() 方法返回产生事件的对象
事件相关信息:如鼠标位置、按键代码、时间戳等
事件类型标识:区分不同类型的事件
// 事件对象基类
public class EventObject {
protected Object source; // 事件源
public EventObject(Object source) {
this.source = source;
}
public Object getSource() {
return source;
}
}
// 具体事件实现(如 MouseEvent)
public class MouseEvent extends ComponentEvent {
private int x, y; // 鼠标坐标
private int button; // 鼠标按钮
private int clickCount; // 点击次数
// 其他属性和方法...
}
3. 事件处理机制
Java 使用委托事件模型处理事件,包含三个关键步骤:
注册监听器:事件源注册监听器
button.addActionListener(myListener);
事件触发:用户操作触发事件
// 在按钮内部实现
protected void fireActionPerformed(ActionEvent event) {
for (ActionListener listener : listeners) {
listener.actionPerformed(event);
}
}
事件处理:监听器执行响应代码
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击");
}
Java 事件处理示例
1. 动作事件处理(按钮点击)
import javax.swing.*;
import java.awt.event.*;
public class ButtonEventDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("按钮事件示例");
JButton button = new JButton("点击我");
// 注册动作监听器
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取事件源
JButton source = (JButton) e.getSource();
// 获取事件信息
long when = e.getWhen();