黑马程序员技术交流社区
标题:
事件监听如何实现---窗体监听
[打印本页]
作者:
水蛭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)
窗口首次变为可见时调用
有了这些动作,那么定义这些动作的处理方式,需要自己定义;
代码如下:
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);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2