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” 的事件會被處理。