大部分 GUI 应用程序都需要使用 Window 窗体对象作为最外层的容器,可以说窗体对象是所有 GUI 应用程序的基础,应用程序中通常都是将其他组件直接或者间接地置于窗体中。
当对窗体进行操作时,例如窗体的打开、关闭、激活、停用等,这些动作都属于窗体事件,JDK 中提供了一个 WindowEvent 类用于表示这些窗体事件。在应用程序中,当对窗体事件进行处理时,首先需要定义一个实现了 WindowListener 接口的**类作为窗体监听器(也可以通过继承适配器 WindowAdapter 类来实现),然后通过_ addWinodwListener()_方法将窗体对象与窗体监听器**绑定。
接下来通过一个案例来实现对窗体事件的监听,如下所示。
import java.awt.Frame;
import java.awt.Window;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class example11 {
public static void main(String[] args) {
Frame frame = new Frame("WinodwEvent");
frame.setSize(400, 300);
frame.setLocation(300, 200);
frame.addWindowListener(new WindowListener() {
public void windowOpened(WindowEvent e) {
System.out.println("windowOpened---窗体打开事件");
}
public void windowIconified(WindowEvent e) {
System.out.println("windowIconified---窗体图标化事件");
}
public void windowDeiconified(WindowEvent e) {
System.out.println("windowDeiconified---窗体取消图标化事件");
}
public void windowDeactivated(WindowEvent e) {
System.out.println("windowDeactivated---窗体停用事件");
}
public void windowClosing(WindowEvent e) {
System.out.println("windowClosing---窗体正在关闭事件");
((Window) e.getComponent()).dispose(); //调用 dispose()方法
}
public void windowClosed(WindowEvent e) {
System.out.println("windowClosed---窗体关闭事件");
}
public void windowActivated(WindowEvent e) {
System.out.println("windowActivated---窗体激活事件");
}
});
frame.setVisible(true);
}
}
运行结果如下所示。
上述代码块中,通过 WindowListener 对操作窗口的窗体事件进行监听,当接收到特定的动作后,就将所触发事件的名称打印出来。
- 运行程序,当生成窗体后,控制台上输出“windowOpened—-窗体打开事件”;
- 当单击窗体的最小化按钮后,控制台上依次输出“windowIconified—-窗体图标化事件”“windowDeactivated—-窗体停用事件”;
- 当单击任务栏上的图标,再次激活窗体后,控制台上依次输出“windowDeiconified—-窗体取消图标化事件”“windowActivated—-窗体激活事件”;
- 当单击窗体上的关闭按钮,关闭窗体时,控制台上依次输出“windowClosing—-窗体正在关闭事件”“windowDeactivated—-窗体停用事件”“windowClosed—-窗体关闭事件”。
了解了窗体事件后,在以后的编程中,可以根据实际需求,在监听器中自定义窗体的事件处理器。