大部分 GUI 应用程序都需要使用 Window 窗体对象作为最外层的容器,可以说窗体对象是所有 GUI 应用程序的基础,应用程序中通常都是将其他组件直接或者间接地置于窗体中。

    当对窗体进行操作时,例如窗体的打开、关闭、激活、停用等,这些动作都属于窗体事件,JDK 中提供了一个 WindowEvent 类用于表示这些窗体事件。在应用程序中,当对窗体事件进行处理时,首先需要定义一个实现了 WindowListener 接口的**作为窗体监听器(也可以通过继承适配器 WindowAdapter 类来实现),然后通过_ addWinodwListener()_方法将窗体对象与窗体监听器**绑定

    接下来通过一个案例来实现对窗体事件的监听,如下所示。

    1. import java.awt.Frame;
    2. import java.awt.Window;
    3. import java.awt.event.WindowEvent;
    4. import java.awt.event.WindowListener;
    5. public class example11 {
    6. public static void main(String[] args) {
    7. Frame frame = new Frame("WinodwEvent");
    8. frame.setSize(400, 300);
    9. frame.setLocation(300, 200);
    10. frame.addWindowListener(new WindowListener() {
    11. public void windowOpened(WindowEvent e) {
    12. System.out.println("windowOpened---窗体打开事件");
    13. }
    14. public void windowIconified(WindowEvent e) {
    15. System.out.println("windowIconified---窗体图标化事件");
    16. }
    17. public void windowDeiconified(WindowEvent e) {
    18. System.out.println("windowDeiconified---窗体取消图标化事件");
    19. }
    20. public void windowDeactivated(WindowEvent e) {
    21. System.out.println("windowDeactivated---窗体停用事件");
    22. }
    23. public void windowClosing(WindowEvent e) {
    24. System.out.println("windowClosing---窗体正在关闭事件");
    25. ((Window) e.getComponent()).dispose(); //调用 dispose()方法
    26. }
    27. public void windowClosed(WindowEvent e) {
    28. System.out.println("windowClosed---窗体关闭事件");
    29. }
    30. public void windowActivated(WindowEvent e) {
    31. System.out.println("windowActivated---窗体激活事件");
    32. }
    33. });
    34. frame.setVisible(true);
    35. }
    36. }

    运行结果如下所示。
    QQ截图20200620102210.png

    上述代码块中,通过 WindowListener 对操作窗口的窗体事件进行监听,当接收到特定的动作后,就将所触发事件的名称打印出来。

    1. 运行程序,当生成窗体后,控制台上输出“windowOpened—-窗体打开事件”;
    2. 当单击窗体的最小化按钮后,控制台上依次输出“windowIconified—-窗体图标化事件”“windowDeactivated—-窗体停用事件”;
    3. 当单击任务栏上的图标,再次激活窗体后,控制台上依次输出“windowDeiconified—-窗体取消图标化事件”“windowActivated—-窗体激活事件”;
    4. 当单击窗体上的关闭按钮,关闭窗体时,控制台上依次输出“windowClosing—-窗体正在关闭事件”“windowDeactivated—-窗体停用事件”“windowClosed—-窗体关闭事件”。

    了解了窗体事件后,在以后的编程中,可以根据实际需求,在监听器中自定义窗体的事件处理器。