黑马程序员技术交流社区

标题: 事件监听如何实现---窗体监听 [打印本页]

作者: 水蛭31    时间: 2015-7-16 11:15
标题: 事件监听如何实现---窗体监听
事件监听如何实现---窗体监听

首先需要明确的是, 目标是窗体,
事件源:窗体


而需要添加监听器给窗体, 而Frame这个类是用来描述窗体的,所以这个类最清楚, 所以找这个类中的方法addWindowListener();
监听器:WindowListener;

发现WindowListener这个监听器是一个接口,无法实例化, 因此需要找这个类的子类来实例化,
发现WindowAdapter这个类实现了WindowListener接口,而且覆盖了这个接口的所有方法,因此可以创建这个类WindowAdapter的对象
因此,监听器: WindowAdapter,可以通过匿名内部类的方式实现;

封装在监听器中的事件对象的动作如下:
void windowClosed(WindowEvent e)
          因对窗口调用 dispose 而将其关闭时调用。
void windowClosing(WindowEvent e)
          用户试图从窗口的系统菜单中关闭窗口时调用。
void windowDeactivated(WindowEvent e)
          当 Window 不再是活动 Window 时调用。
void windowDeiconified(WindowEvent e)
          窗口从最小化状态变为正常状态时调用。
void windowIconified(WindowEvent e)
          窗口从正常状态变为最小化状态时调用。
void windowOpened(WindowEvent e)
          窗口首次变为可见时调用


有了这些动作,那么定义这些动作的处理方式,需要自己定义;
代码如下:
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. class AwtDemo1
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 //创建一个窗体
  8.                 Frame f=new Frame("我的窗口");//构造一个新的、最初不可见的、具有指定标题的 Frame 对象;
  9.                 Button b=new Button("按钮");//创建一个按钮
  10.                 f.setVisible(true);//设置可见
  11.                 f.setSize(300,200);//设置大小
  12.                 f.setLocation(100,100);//设置位置
  13.                 //f.setBounds(100,100,300,200);//设置位置和大小
  14.                 f.setLayout(new FlowLayout());//默认是边界式布局,设置流式布局管理器
  15.                 f.add(b);//将按钮添加到窗体中
  16.                
  17.                 //窗体事件
  18.                 //f.addWindowListener(WindowListener);
  19.                 //覆盖WindowListener的七个方法,可是我只需要用关闭的动作
  20.                 //其他动作都没有用到,可以却必须复写,这时需要用到WindowListener的子类对象
  21.                 //WindowAdapter他已经实现了WindowListener接口,并覆盖了WindowListener的所有方法,
  22.                 //那么我只需要继承自WindowAdapter覆盖我所需要的方法即可
  23.                 //f.addWindowListener(new MyWin());
  24.                 f.addWindowListener(new WindowAdapter(){//匿名内部类
  25.                         public void windowClosing(WindowEvent e){
  26.                                 System.exit(0);
  27.                         }
  28.                         public void windowActivated(WindowEvent e){
  29.                                 System.out.println("我活了, 被前置了");
  30.                         }
  31.                         public void windowOpened(WindowEvent e){
  32.                                 System.out.println("我被打开了");
  33.                         }
  34.                 });
  35.         }
  36. }
  37. class MyWin extends WindowAdapter
  38. {
  39.         public void windowClosing(WindowEvent e){
  40.                 System.out.println("窗体关闭"+e);
  41.                 System.exit(0);
  42.         }
  43. }
复制代码










欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2