当前位置: 首页 > article >正文

《Java核心技术 卷I》图形界面事件处理适配器类

适配器类

并不是所有的事件处理都像按钮点击那样简单,假设你想监视用户何时想要关闭主窗体,可能希望弹出一个对话框,只有在用户确认之后才退出程序。当程序试图关闭一个窗口时,JFrame对象就是WindowEvent的事件源,如果希望捕获这个事件,就必须有一个合适的监听器对象,并将它添加到窗体的窗口监听器列表中。

WindowListener listener = ...;

frame.addWindowListener(listener);

窗口监听器必须是实现WindowListener接口的类的一个对象,完整接口如下:

package java.awt.event;
import java.util.EventListener;

public interface WindowListener extends EventListener {
    public void windowOpened(WindowEvent e);
    public void windowClosing(WindowEvent e);
    public void windowClosed(WindowEvent e);
    public void windowIconified(WindowEvent e);//最小化
    public void windowDeiconified(WindowEvent e);
    public void windowActivated(WindowEvent e);
    public void windowDeactivated(WindowEvent e);
}

每个含有多个方法的AWT监听器接口都配有一个适配器(adapter)类,这个实现了接口中所有方法,但是不做任何事情,真正的类可以继承这个类重写任何一个方法而不用实现接口以及接口中的方法,上面的接口的适配器类是WindowAdapter。

下面来定义一个窗口监听器,覆盖windowClosing方法:

    @Override
    public void windowClosing(WindowEvent e) {
        if(true) {
            System.exit(0);
        }
    }

java.awt.event.WindowListener 1.1

  • void windowOpened(WindowEvent e),窗口打开后调用这个方法。
  • void windowClosing(WindowEvent e),在用户发出一个窗口管理器命令要关闭窗口时调用这个方法,需要注意的是,仅当调用hide或dispose方法后窗口才能够关闭。
  • void windowClosed(WindowEvent e),窗口关闭后调用这个方法。
  • void windowIconified(WindowEvent e),窗口最小化后调用这个方法。
  • void windowDeiconified(WindowEvent e),窗口取消最小化后调用这个方法。
  • void windowActivated(WindowEvent e),激活窗口后调用这个方法,只有窗体或对话框可以被激活,通常窗口管理器会对活动窗口进行修饰,比如,高亮显示标题栏。
  • void windowDeactivated(WindowEvent e),窗口变为未激活状态后调用这个方法。

java.awt.event.WindowStateListener 1.4

  • void windowStateChanged(WindowEvent event),窗口被最大化、最小化或恢复为正常大小时调用这个方法。


http://www.kler.cn/a/395596.html

相关文章:

  • VoIP是什么?
  • 【CICD】CICD 持续集成与持续交付在测试中的应用
  • 从python源码到可自动更新软件
  • 【Rust 编程语言工具】rustup-init.exe 安装与使用指南
  • 基于微信小程序的平安驾校预约平台的设计与实现(源码+LW++远程调试+代码讲解等)
  • 【Kafka】集成案例:与Spark大数据组件的协同应用
  • Unix进程
  • 杰控通过 OPCproxy 获取数据发送到服务器
  • 嵌入是开发 之TCP网络编程(一)
  • 界面控件DevExpress Blazor UI v24.1新版亮点 - 全新PDF Viewer等组件
  • SQL Server Service Broker完整示例
  • 【代码大模型】Is Your Code Generated by ChatGPT Really Correct?论文阅读
  • react 中 memo 模块作用
  • 深入理解BERT模型:BertModel类详解
  • [Mysql基础] 表的操作
  • Qt 的 QThread:多线程编程的基础
  • Uniapp 引入 Android aar 包 和 Android 离线打包
  • 跟李笑来学美式俚语(Most Common American Idioms): Part 01
  • 网络安全---安全见闻2
  • Shell编程-2
  • (三十三)队列(queue)
  • ES操作命令
  • 信息技术引领未来:大数据治理的实践与挑战
  • 使用视频提升应用在 App Store 中的推广效果
  • 【Java Web】Servlet
  • IntelliJ IDEA新建项目或导入未识别为maven解决