温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Event事件如何定义

发布时间:2026-10-06 12:27:53 来源:亿速云 阅读:86 作者:小樊 栏目:编程语言

在 Java 中,Event(事件)通常是通过事件源(Event Source) + 事件对象(Event Object) + 事件监听器(EventListener)三部分来定义的。下面从基础定义方式和常见实现方式给你说明。


一、最基础的定义方式(自定义事件)

1️⃣ 定义事件类(继承 EventObject)

import java.util.EventObject;

public class MyEvent extends EventObject {

    private String message;

    public MyEvent(Object source, String message) {
        super(source);
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}
  • source:事件发生的对象(谁触发的)
  • EventObject 是 Java 标准事件基类

2️⃣ 定义事件监听器接口(继承 EventListener)

import java.util.EventListener;

public interface MyEventListener extends EventListener {
    void onMyEvent(MyEvent event);
}

3️⃣ 事件源(触发事件的对象)

import java.util.ArrayList;
import java.util.List;

public class EventSource {

    private List<MyEventListener> listeners = new ArrayList<>();

    public void addMyEventListener(MyEventListener listener) {
        listeners.add(listener);
    }

    public void removeMyEventListener(MyEventListener listener) {
        listeners.remove(listener);
    }

    public void fireEvent(String message) {
        MyEvent event = new MyEvent(this, message);
        for (MyEventListener listener : listeners) {
            listener.onMyEvent(event);
        }
    }
}

4️⃣ 使用示例

public class Test {
    public static void main(String[] args) {
        EventSource source = new EventSource();

        source.addMyEventListener(event -> {
            System.out.println("收到事件:" + event.getMessage());
        });

        source.fireEvent("Hello Event!");
    }
}

二、Java 标准 GUI 中的 Event(如 Swing)

Java 本身大量使用事件模型,例如:

button.addActionListener(e -> {
    System.out.println("按钮被点击");
});

对应:

  • ActionEvent:事件对象
  • ActionListener:监听器
  • JButton:事件源

三、Spring 中的 Event(非常常见)

如果你用的是 Spring,事件更简单:

1️⃣ 定义事件

public class UserCreatedEvent {
    private String username;

    public UserCreatedEvent(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }
}

2️⃣ 发布事件

@Autowired
private ApplicationEventPublisher publisher;

public void createUser() {
    publisher.publishEvent(new UserCreatedEvent("Tom"));
}

3️⃣ 监听事件

@Component
public class UserEventListener {

    @EventListener
    public void handle(UserCreatedEvent event) {
        System.out.println("用户创建:" + event.getUsername());
    }
}

四、总结

方式 使用场景
自定义 Event + Listener 普通 Java 项目
AWT / Swing Event GUI 程序
Spring Event 企业级 / 解耦业务

如果你是初学者 / 面试 / Spring / GUI 场景,我可以给你更针对性的示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手