Java事件处理和事件派发机制

本文详细介绍了Java中的事件处理和事件派发机制。事件处理涉及事件源、事件监听器和事件对象,而事件派发机制则依赖于事件派发线程EDT,确保事件的串行处理。通过实例分析了如何注册监听器、实现事件处理方法以及如何利用invokeLater和invokeAndWait。
摘要由CSDN通过智能技术生成

事件处理

GUI程序是事件驱动程序,因此我们需要学习Java的事件处理

常见的事件包括

  • 移动鼠标
  • 单双击鼠标各个按钮
  • 单击按钮
  • 在文本字段输入

Swing通过事件对象来包装事件,程序可以通过事件获取事件的有关信息

事件处理的几个要素

  • 事件源

    • 与用户进行交互的GUI组件,表示事件来自于哪个组件或对象
    • 比如要对按钮被按下这个事件编写程序,按钮就是事件源
    • 提供注册监听器或取消注册监听器的方法
    • 如有事件发生,已注册的监听器就会被通知
    • 一个事件源可以注册多个监听器,每个事件监听器又可以响应多种事件
  • 事件监听器

    • 负责监听事件并做出响应
    • 一旦它监视到事件发生,就会自动调用相应的事件处理程序作出响应
    • 是一个对象,通过事件源的addxxxListener方法被注册到某个事件源上
    • 不同的Swing组件可以注册不同的事件监听器
    • 一个事件监听器中可以包含有多种具体事件的专用处理方法
  • 事件对象

    • 封装了有关已发生的事件的信息
    • 例如按钮被按下就是一个要被处理的事件,当用户按下按钮时,就会产生一个事件对象,事件对象中包含事件的相关信息和事件源
    • 常用的事件对象有ActionEvent,ItemEvent等等,具体可查阅API文档

上面的基本概念很重要

我们要做的是什么?

  1. 为事件源注册一个事件监听器
  2. 实现事件处理方法

接口与适配器

  • 事件监听器接口

    就是一个抽象类,如果要使用它,必须将其定义的方法都实现

  • 事件监听器适配类

    如果你不想实现事件监听器接口的所有类,那就继承实现了事件监听器接口的子类(适配器),然后覆盖你想要单独写的事件就可以了

    当然,如果你这个类已经继承了其他的类了,这时候没办法再继承这个适配器,你还可以使用匿名的内部类(不用起名,直接New一个,然后向上转型就可以)

看一个程序

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;

public cla
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值