java中监听器的种类及其使用和代码示例和详细解释
时间: 2023-08-08 16:04:17 浏览: 146
Java中的监听器是一种设计模式,它允许对象在其状态发生改变时通知其他对象。监听器通常用于GUI应用程序中,以响应用户的操作并执行相应的操作。
Java中的监听器分为三种类型:
1. 事件监听器(Event Listeners):用于处理和响应事件,例如按钮点击或鼠标移动等。
2. 属性监听器(Property Listeners):用于监视对象属性的更改,并在发生更改时通知其他对象。
3. 容器监听器(Container Listeners):用于监视容器组件(例如面板或窗口)的更改,并在更改发生时通知其他对象。
下面是一个简单的Java代码示例,它演示了如何使用事件监听器:
```
import java.awt.*;
import java.awt.event.*;
public class MyFrame extends Frame implements ActionListener {
Button btn;
public MyFrame() {
super("My Frame");
btn = new Button("Click Me!");
btn.addActionListener(this);
add(btn);
setSize(300, 300);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btn) {
System.out.println("Button Clicked!");
}
}
public static void main(String[] args) {
new MyFrame();
}
}
```
在这个例子中,我们创建了一个按钮并添加了一个`ActionListener`,当按钮被点击时,`actionPerformed()`方法将被调用并打印一条消息。
使用属性监听器的示例代码如下:
```
import java.beans.*;
public class MyBean {
private String name;
private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public void setName(String newName) {
String oldName = name;
name = newName;
pcs.firePropertyChange("name", oldName, newName);
}
public String getName() {
return name;
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
pcs.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
pcs.removePropertyChangeListener(listener);
}
}
```
在这个例子中,我们创建了一个`MyBean`类,它具有一个`name`属性。当属性更改时,我们使用`PropertyChangeSupport`类通知所有已注册的属性监听器。
最后,以下是一个容器监听器的示例代码:
```
import java.awt.*;
import java.awt.event.*;
public class MyFrame extends Frame implements ComponentListener {
public MyFrame() {
super("My Frame");
addComponentListener(this);
setSize(300, 300);
setVisible(true);
}
public void componentResized(ComponentEvent e) {
System.out.println("Frame Resized!");
}
public void componentMoved(ComponentEvent e) {
System.out.println("Frame Moved!");
}
public void componentShown(ComponentEvent e) {
System.out.println("Frame Shown!");
}
public void componentHidden(ComponentEvent e) {
System.out.println("Frame Hidden!");
}
public static void main(String[] args) {
new MyFrame();
}
}
```
在这个例子中,我们创建了一个`MyFrame`类,并添加了一个`ComponentListener`来监听组件事件。当窗口调整大小、移动、显示或隐藏时,`componentResized()`、`componentMoved()`、`componentShown()`或`componentHidden()`方法将被调用并打印一条消息。
阅读全文