Java的EventListener
接口本身不支持事件过滤。但是,您可以通过实现自定义的EventListener
来执行过滤操作。以下是一个简单的示例,展示了如何创建一个自定义的EventListener
来过滤特定类型的事件:
import java.util.EventListener; // 自定义事件过滤器接口 interface CustomFilterEventListener extends EventListener { boolean accept(CustomEvent event); } // 自定义事件类 class CustomEvent { private String type; public CustomEvent(String type) { this.type = type; } public String getType() { return type; } } // 自定义事件发布者 class CustomEventPublisher { private CustomFilterEventListener listener; public void setListener(CustomFilterEventListener listener) { this.listener = listener; } public void publishEvent(CustomEvent event) { if (listener != null && listener.accept(event)) { // 触发事件处理程序 System.out.println("Event processed: " + event.getType()); } else { System.out.println("Event filtered: " + event.getType()); } } } // 自定义事件处理程序 class CustomEventHandler implements CustomFilterEventListener { @Override public boolean accept(CustomEvent event) { // 过滤条件:只处理类型为 "type1" 的事件 return "type1".equals(event.getType()); } @Override public void actionPerformed(CustomEvent event) { // 实际的事件处理逻辑 System.out.println("Event action performed: " + event.getType()); } } public class Main { public static void main(String[] args) { CustomEventPublisher publisher = new CustomEventPublisher(); CustomEventHandler handler = new CustomEventHandler(); publisher.setListener(handler); // 发布事件 publisher.publishEvent(new CustomEvent("type1")); publisher.publishEvent(new CustomEvent("type2")); } }
在这个示例中,我们创建了一个自定义的CustomEvent
类和一个自定义的CustomEventPublisher
类。CustomEventPublisher
类有一个CustomFilterEventListener
类型的listener
属性,用于存储事件过滤器。当发布事件时,CustomEventPublisher
会检查事件过滤器是否接受该事件,如果接受,则触发事件处理程序。
CustomEventHandler
类实现了CustomFilterEventListener
接口,并重写了accept
方法以应用过滤条件。在这个例子中,我们只处理类型为 “type1” 的事件。当发布事件时,只有类型为 “type1” 的事件会被处理。