当前位置:首页 > Java

java如何监听

2026-03-20 03:29:34Java

监听事件的实现方式

在Java中,监听通常通过事件监听器(EventListener)实现。常见场景包括GUI事件(如按钮点击)、自定义事件或系统级监听(如文件变化)。以下是几种典型实现方法:

GUI事件监听(Swing/AWT)

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("按钮被点击");
    }
});

Lambda表达式简化写法:

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

自定义事件监听

  1. 定义监听接口

    public interface CustomListener {
     void onEvent(String eventData);
    }
  2. 实现监听器管理

    public class EventEmitter {
     private List<CustomListener> listeners = new ArrayList<>();
    
     public void addListener(CustomListener listener) {
         listeners.add(listener);
     }
    
     public void emitEvent(String data) {
         for (CustomListener listener : listeners) {
             listener.onEvent(data);
         }
     }
    }

文件系统监听(Java NIO)

Path path = Paths.get("/path/to/directory");
WatchService watchService = FileSystems.getDefault().newWatchService();

path.register(watchService, 
    StandardWatchEventKinds.ENTRY_CREATE,
    StandardWatchEventKinds.ENTRY_DELETE,
    StandardWatchEventKinds.ENTRY_MODIFY);

while (true) {
    WatchKey key = watchService.take();
    for (WatchEvent<?> event : key.pollEvents()) {
        System.out.println("事件类型: " + event.kind() + " 文件: " + event.context());
    }
    key.reset();
}

网络端口监听(ServerSocket)

try (ServerSocket serverSocket = new ServerSocket(8080)) {
    while (true) {
        Socket clientSocket = serverSocket.accept();
        new Thread(() -> {
            // 处理客户端请求
        }).start();
    }
}

Spring框架的事件监听

  1. 定义事件类

    public class CustomEvent extends ApplicationEvent {
     public CustomEvent(Object source) {
         super(source);
     }
    }
  2. 发布事件

    
    @Autowired
    private ApplicationEventPublisher eventPublisher;

eventPublisher.publishEvent(new CustomEvent(this));

java如何监听


3. 监听事件
```java
@EventListener
public void handleEvent(CustomEvent event) {
    // 处理事件逻辑
}

观察者模式实现

public class Subject {
    private List<Observer> observers = new ArrayList<>();

    public void addObserver(Observer o) {
        observers.add(o);
    }

    public void notifyObservers(String message) {
        for (Observer o : observers) {
            o.update(message);
        }
    }
}

public interface Observer {
    void update(String message);
}

根据具体需求选择适合的监听方式,GUI开发优先使用内置监听器,系统级监控考虑NIO或WatchService,Spring应用可使用框架自带的事件机制。

标签: java
分享给朋友:

相关文章

java如何创建文件

java如何创建文件

使用 File 类创建文件 通过 File 类的 createNewFile() 方法创建文件。此方法返回布尔值,表示文件是否成功创建。 import java.io.File; import ja…

java如何

java如何

Java 基础语法 Java 是一种面向对象的编程语言,语法相对严谨。每个 Java 程序必须包含一个 main 方法作为程序入口。以下是一个简单的 Java 程序示例: public class…

java如何输入

java如何输入

使用Scanner类进行输入 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读取数据。需要导入java.util.Scanner包。 基本语法: Scanner sca…

java如何编译

java如何编译

编译Java程序的基本步骤 安装JDK(Java Development Kit)并配置环境变量。确保javac和java命令可在命令行中运行。JDK是编译和运行Java程序的必备工具。 创建Jav…

如何学习java

如何学习java

学习Java的步骤 理解基础知识 从Java的基本语法开始,包括变量、数据类型、运算符、控制流(if-else、循环)等。掌握这些基础概念是后续学习的基石。 学习面向对象编程(OOP) Java是一…

java如何自学

java如何自学

确定学习目标和路径 自学Java需要明确目标,例如开发Web应用、Android应用或后端服务。根据目标选择学习重点,如Java基础、Spring框架或Android开发。制定阶段性计划,从基础语法到…