事件监听如何实现---窗体监听
首先需要明确的是, 目标是窗体,
事件源:窗体
而需要添加监听器给窗体, 而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)
窗口首次变为可见时调用
有了这些动作,那么定义这些动作的处理方式,需要自己定义;
代码如下:
- import java.awt.*;
- import java.awt.event.*;
- class AwtDemo1
- {
- public static void main(String[] args)
- {
- //创建一个窗体
- Frame f=new Frame("我的窗口");//构造一个新的、最初不可见的、具有指定标题的 Frame 对象;
- Button b=new Button("按钮");//创建一个按钮
- f.setVisible(true);//设置可见
- f.setSize(300,200);//设置大小
- f.setLocation(100,100);//设置位置
- //f.setBounds(100,100,300,200);//设置位置和大小
- f.setLayout(new FlowLayout());//默认是边界式布局,设置流式布局管理器
- f.add(b);//将按钮添加到窗体中
-
- //窗体事件
- //f.addWindowListener(WindowListener);
- //覆盖WindowListener的七个方法,可是我只需要用关闭的动作
- //其他动作都没有用到,可以却必须复写,这时需要用到WindowListener的子类对象
- //WindowAdapter他已经实现了WindowListener接口,并覆盖了WindowListener的所有方法,
- //那么我只需要继承自WindowAdapter覆盖我所需要的方法即可
- //f.addWindowListener(new MyWin());
- f.addWindowListener(new WindowAdapter(){//匿名内部类
- public void windowClosing(WindowEvent e){
- System.exit(0);
- }
- public void windowActivated(WindowEvent e){
- System.out.println("我活了, 被前置了");
- }
- public void windowOpened(WindowEvent e){
- System.out.println("我被打开了");
- }
- });
- }
- }
- class MyWin extends WindowAdapter
- {
- public void windowClosing(WindowEvent e){
- System.out.println("窗体关闭"+e);
- System.exit(0);
- }
- }
复制代码
|
|