Java AWT 图形界面编程事件处理机制 ① ( 事件处理步骤 | 创建事件源对象 -> 自定义事件监听器 -> 创建监听器实例对象 -> 事件源绑定事件监听器 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java AWT 图形界面编程事件处理机制 ① ( 事件处理步骤 | 创建事件源对象 -> 自定义事件监听器 -> 创建监听器实例对象 -> 事件源绑定事件监听器 )相关的知识,希望对你有一定的参考价值。

文章目录





一、关闭按钮功能



在之前的博客中写的 AWT 界面程序 , 右上角有三个按钮 , 分别是 最小化 , 最大化 , 关闭 按钮 ,

其中 最小化 最大化 按钮可以使用 , 功能由系统提供 ,

但是 关闭按钮 的 功能 需要 开发者自己添加 , 否则界面无法关闭 ;

在 AWT 界面上的组件 , 默认都是没有绑定事件的 , 有少数组件由系统提供绑定事件 , 大部分都需要开发者自己开发事件功能 ;





二、事件处理机制



事件处理机制 就是 在 某个组件 上执行 某个操作 , 会 自动触发执行一段代码 ; 这个操作可以是 按下 , 抬起 , 点击 , 移动 等操作 ;


事件处理 三要素 :

  • 事件源 : 触发事件的组件 , 如 : 按钮 ;
  • 事件 : 在组件上 触发的操作就是事件 , 如 : 点击 , 按下 , 抬起 , 滑动 , 拖动 等 ; 事件都被封装在了 Event 中 , 具体的 事件信息可以从 Event 实例对象中获取 ;
  • 事件监听器 : 注册在 事件源 也就是 组件上的 监听器 , 如果监听到 事件发生 , 就会触发指定代码执行 ;

注册监听 :事件监听器 绑定 到 事件源 的操作 , 就是 注册监听 ;


事件处理过程 :

  • 首先 , 需要将事件监听器 注册给 事件源 ;
  • 然后 , 外部的操作 作用在了 事件源 组件 上 ;
  • 再后 , 事件源 生成了 Event 事件对象 , 其中封装了 外部操作 的各种数据 ;
  • 最后 , 事件监听器 监听到了 事件 , 开始 执行 监听器 中的代码 , 在事件监听器中可以获取到事件源 生成的 事件对象 ;




三、事件处理步骤



事件处理步骤 :

  • 首先 , 创建 事件源 实例对象 , 也就是 Component 组件对象 ;
  • 然后 , 自定义 事件监听器 类 , 该类实现 事件监听器接口 , 需要重写指定的方法 , 一般都使用匿名内部类 ;
  • 再后 , 创建 上述 自定义 事件监听器 实例对象 ;
  • 最后 , 调用 事件源 添加 事件监听器 的函数 , 在 事件源 上 注册 事件监听器 ;

代码示例 :

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class HelloAWT 
    private Frame frame;
    private FileDialog openDialog;
    private MyActionListener myActionListener;

    private void init() 
        frame = new Frame("AWT 界面编程");
        openDialog = new FileDialog(frame, "打开文件", FileDialog.LOAD);

        // 1. 创建 事件源 实例对象 , 也就是 Component 组件对象
        Button openButton = new Button("打开文件");

        // 3. 创建 上述 自定义 事件监听器 实例对象
        myActionListener = new MyActionListener();

        // 4. 调用 事件源 添加 事件监听器 的函数 , 在 事件源 上 注册 事件监听器
        openButton.addActionListener(myActionListener);

        frame.add(openButton);
        frame.pack();
        frame.setVisible(true);
    

    // 2. 自定义 事件监听器 类 , 该类实现 事件监听器接口 , 需要重写指定的方法 , 一般都使用匿名内部类
    class MyActionListener implements ActionListener 
        @Override
        public void actionPerformed(ActionEvent e) 
            // 显示 打开文件对话框
            // 提示选择 文件
            // 执行后代码会阻塞在此处
            openDialog.setVisible(true);

            // 文件选择完毕 , 就会执行后续代码
            // 获取选择的 目录名称 和 文件名称
            System.out.println("打开的文件路径 : "
                    + openDialog.getDirectory()
                    + openDialog.getFile());
        
    

    public static void main(String[] args) 
        new HelloAWT().init();
    

执行结果 : 点击按钮后 , 弹出对话框 ,

在对话框中选择文件 ,

最终打印出选择文件的路径 :

打开的文件路径 : C:\\Users\\octop\\Desktop\\隐私政策.md

以上是关于Java AWT 图形界面编程事件处理机制 ① ( 事件处理步骤 | 创建事件源对象 -> 自定义事件监听器 -> 创建监听器实例对象 -> 事件源绑定事件监听器 )的主要内容,如果未能解决你的问题,请参考以下文章

Java AWT 图形界面编程事件处理机制 ② ( Frame 窗口事件监听器 WindowListener | 代码示例 )

Java AWT 图形界面编程事件处理机制 ② ( Frame 窗口事件监听器 WindowListener | 代码示例 )

Java AWT 图形界面编程事件处理机制 ③ ( AWT 中常见的事件和事件监听器 | 低级事件 | 组件事件 | 窗口事件 | 鼠标事件 | 高级事件 | 动作事件 | 事件监听器 )

Java图形用户界面编程

AWT编程

Java AWT 图形界面编程Canvas 组件中使用 Graphics 绘图 ① ( AWT 绘图线程 | Component 绘图函数 )