
我们创建了窗体后,就要对窗体进行操作,比如关闭窗口。而这时候就要建立监听机制:
事件监听机制:
A:事件源 事件发生的地方
B:事件 就是要发生的事情
C:事件处理 就是针对发生的事情做出的处理方案
D:事件监听 就是把事件源和事件关联起来
举例:人受伤事件。
事件源:人(具体的对象)
Person p1 = new Person("张三");
Person p2 = new Person("李四");
事件:受伤
interface 受伤接口 {
一拳();
一脚();
一板砖();
}
事件处理:
受伤处理类 implements 受伤接口 {
一拳(){ System.out.println("鼻子流血了,送到卫生间洗洗"); }
一脚(){ System.out.println("晕倒了,送到通风处"); }
一板砖(){ System.out.println("头破血流,送到医院"); }
}
事件监听:
p1.注册监听(受伤接口)
public class FrameDemo1 {
public static void main(String[] args) { //创建窗口
Frame f = new Frame("监听机制");
//设置属性
f.setBounds(300, 300, 300, 400);
// 让窗体关闭
//用于接收窗口事件的侦听器接口 WindowListene
//事件源:窗体
//事件:对窗体的处理
//事件处理:关闭窗口(System.exit(0));
//事件监听 //添加侦听器接口
f.addWindowListener(new WindowListener() { public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub } public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub } public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub } public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub }
//只监听关闭方法
public void windowClosing(WindowEvent e) {
//关闭窗口
System.exit(0); } public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub } public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub }
}); //显示窗口
f.setVisible(true);
} }
上面那种方法,只需要使用一种方法,但却调出了接口的所有构造方法,这样太浪费
用适配器改进 接收窗口事件的抽象适配器类。WindowAdapter
步骤:
创建侦听器,匿名内部类写适配器类,重写适配器类的构造方法
代码:
//创建侦听器,匿名内部类写适配器类,重写适配器类的构造方法
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//super.windowClosing(e);
//重写方法
System.exit(0);
}
});