事件监听
生活中的行为动作的执行方式:
1. 明确知道该动作怎么/何时发生 普通的方法调用
2. 行为不知道确切的发生时间,密切监视动作何时发生
3. 若干个行为同事发生--线程
比如:
我在看小抄
事件源----主体:我
行为:看小抄
监听动作:看监考老师来没来
监听器:
监听行为: 动作--> 方法--> 接口(定义监听的接口,该接口封装了事件源监听的那个行为)
事件源注册监听器; 事件源和监听器绑定起来
1.publicclass 事件源类 {}
2. public interface监听器接口 {
publicvoid 事件源正在监听的那个行为方法() {}
}
3.定义了一个类去实现监听器接口
publicclass 监听器接口实现类 implements 监听器接口 {
publicvoid 事件源正在监听的那个行为方法(事件对象) {
又因为监听器定义成了一个接口,所以该参数应该是:实现了监听器接口的某个类的对象
}
}
事件源.add监听器接口(注册在事件源上的监听器对象);
事件源:按钮 需要被时刻“监听”被单击的动作
事件源:Button
监听器接口: ActionListener: actionPerformed(ActionEvent)
代码实现:
import java.awt.*;
import java.awt.event.*;
public class Test {
public static void main(String[] args) {
Frame f = new Frame("BorderLayout");
Button bn = new Button("BN");
f.add(bn);
/*事件源:bn
监听的动作:actionPerformed(ActionEvent e)
监听器接口:ActionListener
在事件源上注册监听器: addActionListener(监听器接口对象)
*/
bn.addActionListener(new MyListener());
f.setSize(200,200);
f.setVisible(true);
}
}
class MyListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Hello");
}
}