Java写一个事件监听器的注册与实现的代码
时间: 2024-09-21 10:02:32 浏览: 18
在Java中,事件监听器机制通常用于响应用户交互或其他特定条件的发生。下面是一个简单的例子,展示如何创建一个事件源(如按钮)、事件监听器以及如何注册和触发事件:
首先,我们定义一个事件接口(EventInterface):
```java
public interface EventListener {
void handleEvent();
}
```
然后,创建一个具体的事件(比如ButtonClickEvent):
```java
public class ButtonClickEvent extends EventArgs implements EventListener {
// 可能包含按钮信息等
private JButton button;
public ButtonClickEvent(JButton button) {
this.button = button;
}
@Override
public void handleEvent() {
System.out.println("Button clicked: " + button.getText());
}
}
```
接着,事件源(比如JButton):
```java
import javax.swing.JButton;
public class ButtonSource {
private JButton button;
private EventListener listener;
public ButtonSource(JButton button) {
this.button = button;
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (listener != null) {
listener.handleEvent(); // 触发事件处理
}
}
});
}
public void registerEventListener(EventListener listener) {
this.listener = listener;
}
public void unregisterEventListener() {
this.listener = null; // 如果不再需要监听,可以移除注册
}
}
```
最后,你可以这样使用它:
```java
public class Main {
public static void main(String[] args) {
JButton button = new JButton("Click me");
ButtonSource buttonSource = new ButtonSource(button);
// 注册事件监听器
CustomEventListener customListener = new CustomEventListener();
buttonSource.registerEventListener(customListener);
// 点击按钮会触发事件处理
button.requestFocus();
}
}
// 客户端类,实现了EventListener接口
class CustomEventListener implements EventListener {
@Override
public void handleEvent() {
System.out.println("Custom event handler called.");
}
}
```