当前位置:首页 > 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. 定义监听接口

    java如何监听

    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. 定义事件类

    java如何监听

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

    
    @Autowired
    private ApplicationEventPublisher eventPublisher;

eventPublisher.publishEvent(new CustomEvent(this));


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程序

安装开发环境 下载并安装JDK(Java Development Kit),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH正确设置。 选…

java如何编写接口

java如何编写接口

编写Java接口的基本语法 在Java中,接口通过interface关键字定义,可以包含抽象方法、默认方法、静态方法和常量。 public interface MyInterface {…

如何安装java运行环境

如何安装java运行环境

下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面,选择适合操作系统的JDK版本进行下载。Windows用户通常选择.exe安装包,macOS用户选择.dmg,Linu…

java下载功能vue实现

java下载功能vue实现

Java 后端文件下载功能实现 后端需提供文件下载的接口,通常使用 HttpServletResponse 实现。以下是一个简单的 Java Spring Boot 示例: @GetMapping(…

java实现js

java实现js

Java 实现 JavaScript 功能 在 Java 中实现 JavaScript 功能通常涉及以下几种方法: 使用 ScriptEngine Java 提供了 javax.script 包,可…

java如何创建文件

java如何创建文件

创建文件的方法 在Java中创建文件可以通过多种方式实现,以下是常见的几种方法: 使用File.createNewFile()方法 这种方法适用于简单的文件创建需求。需要先创建一个File对象,然…