我们创建了窗体后,就要对窗体进行操作,比如关闭窗口。而这时候就要建立监听机制:
事件监听机制:
A:事件源 事件发生的地方
B:事件 就是要发生的事情
C:事件处理 就是针对发生的事情做出的处理方案
D:事件监听 就是把事件源和事件关联起来
举例:人受伤事件。
事件源:人(具体的对象)
Person p1 = new Person("张三");
Person p2 = new Person("李四");
事件:受伤
interface 受伤接口 {
一拳();
一脚();
一板砖();
}
事件处理:
受伤处理类 implements 受伤接口 {
一拳(){ System.out.println("鼻子流血了,送到卫生间洗洗"); }
一脚(){ System.out.println("晕倒了,送到通风处"); }
一板砖(){ System.out.println("头破血流,送到医院"); }
}
事件监听:
p1.注册监听(受伤接口)
1 public class FrameDemo1 { 2 public static void main(String[] args) { 3 4 //创建窗口 5 Frame f = new Frame("监听机制"); 6 //设置属性 7 f.setBounds(300, 300, 300, 400); 8 // 让窗体关闭 9 //用于接收窗口事件的侦听器接口 WindowListene 10 //事件源:窗体 11 //事件:对窗体的处理 12 //事件处理:关闭窗口(System.exit(0)); 13 //事件监听 14 15 //添加侦听器接口 16 f.addWindowListener(new WindowListener() { 17 18 public void windowOpened(WindowEvent e) { 19 // TODO Auto-generated method stub 20 21 } 22 23 public void windowIconified(WindowEvent e) { 24 // TODO Auto-generated method stub 25 26 } 27 28 public void windowDeiconified(WindowEvent e) { 29 // TODO Auto-generated method stub 30 31 } 32 33 public void windowDeactivated(WindowEvent e) { 34 // TODO Auto-generated method stub 35 36 } 37 //只监听关闭方法 38 public void windowClosing(WindowEvent e) { 39 //关闭窗口 40 System.exit(0); 41 42 } 43 44 public void windowClosed(WindowEvent e) { 45 // TODO Auto-generated method stub 46 47 } 48 49 public void windowActivated(WindowEvent e) { 50 // TODO Auto-generated method stub 51 52 } 53 }); 54 55 56 //显示窗口 57 f.setVisible(true); 58 } 59 60 }
上面那种方法,只需要使用一种方法,但却调出了接口的所有构造方法,这样太浪费
用适配器改进 接收窗口事件的抽象适配器类。WindowAdapter
步骤:
创建侦听器,匿名内部类写适配器类,重写适配器类的构造方法
代码:
1 //创建侦听器,匿名内部类写适配器类,重写适配器类的构造方法 2 f.addWindowListener(new WindowAdapter() { 3 public void windowClosing(WindowEvent e) { 4 //super.windowClosing(e); 5 //重写方法 6 System.exit(0); 7 } 8 });