事件处理设计到了三个对象:
  • EventSource(事件源):事件发生的场所,通常就是各个组件,例如按钮、窗口,菜单等。
  • Event (事件封装了GUI组件上发生的特定事情(通常就是一次用户操作)。如果程序需要获得GUI组件上所发生事件的相关信息,都通过Event象来取得。
  • EventListener(事件监昕器):负责监听事件源所发生的事件,并对各种事件做出响应处理

3,事件的分类:

事件分为两大类,分别为低级事件和高级事件:

1,低级事件:

低级事件是指基于特定动作的事件,比如进入、点击、拖放等动作的鼠标事件,组件得到焦点、失去焦点时触发焦点事件
  • ComponentEvent: 组件事件,当组件尺寸发生变化、位置发生移动、显示 隐藏状态发生改变的时候触发该事件。
  • ContainerEvent: 容器事件,当容器里发生添加组件、删除组件时触发该事件。
  • WindowEvent: 窗口事件,当窗口状态发生改变(如打开、关闭、最大化、最小化)时触发该事件
  • FocusEvent: 焦点事件,当组件得到焦点或失去焦点时触发该事件
  • KeyEvent: 键盘事件,当按键被按下、松开、单击时触发该事
  • MouseEvent: 鼠标事件,当进行单击、按下、松开、移动鼠标等动作时触发该事件
  • PaintEvent: 组件绘制事件,该事件是个特殊的事件类型,GUI组件调update/paint方法来呈现自身时触发该事件,该事件并非专用于事件处理模型
 

2,高级事件:

高级事件是基于语义的事件,它可以不和特定的动作相关联,而依赖于触发该事件的类,比如,在TextField中按Enter会触发ActionEvent件,在滑动条上移动滑块会触发AdjustmentEvent事件,选中列表的某一项会触发ItemEvent事件。
  • ActionEvent:动作事件,当按钮、菜单项被单击,在TextField中按 Enter 键时触发该事件。
  • AdjustmentEvent: 调节事件,在滑动条上移动滑块以调节数值时触发该事件。
  • ItemEvent: 选项事件,当用户选中某项或取消选中某项时触发该事件
  • TextEvent: 文本事件,当文本框、文本域里的文本发生改变时触发该事件。

3,AWT事件继承关系图(粗线圈出来的是常用的):

4,事件类型和监听器表:

5、窗口事件:

通过添加窗口事件来关闭窗口:WindowListener 监听器 windowClosing 方法

import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener; /**
* @ClassName WindowCloseTest
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/5/6.
*/
public class WindowCloseTest {
public static void main(String[] args) {
Frame frame = new Frame("窗口监听器测试");
frame.setBounds(400,300,300,300);
WindowListener windowListener = new WindowListener() {
@Override
public void windowOpened(WindowEvent windowEvent) {
System.out.println("窗口被打开");
} @Override
public void windowClosing(WindowEvent windowEvent) {
System.out.println("窗口关闭中");
System.exit(0);
} @Override
public void windowClosed(WindowEvent windowEvent) {
System.out.println("窗口已关闭");
} @Override
public void windowIconified(WindowEvent windowEvent) {
System.out.println("窗口最小化了");
} @Override
public void windowDeiconified(WindowEvent windowEvent) {
System.out.println("窗口已恢复");
} @Override
public void windowActivated(WindowEvent windowEvent) {
System.out.println("窗口获得焦点");
} @Override
public void windowDeactivated(WindowEvent windowEvent) {
System.out.println("窗口失去焦点");
}
};
frame.addWindowListener(windowListener);
frame.setVisible(true);
}
}

6、事件适配器:

向上面的代码,我们其实只需要用到windowClosing,但是现实是所有的方法都需要重写一遍,很麻烦。事件适配器是监听器接口的空实现,事件适配器实现了事件监听器所有接口,并为该接口里的每个方法都提供了实现,这种实现是一种空实现(方法体内没有任何代码的实现)。当需要创建监听器时,可以通过继承事件适配器,而不是监听器接口。因为事件适配器已经为监听器接口的每个方法提供了空实现,所以程序自己的监听器无须实现监听器接口里的每个方法,只需要重写自己感兴趣的方法,从而可以简化事件监听器的实现类代码。
事件适配器很简单,就是把监听器的Listener修改为Adapter:
比如上面代码修改之后是:


import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener; public class WindowCloseTest {
public static void main(String[] args) {
Frame frame = new Frame("测试关闭窗口");
WindowListener windowListener = new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("正在关闭窗口");
System.exit(0);
}
};
frame.addWindowListener(windowListener);
frame.setBounds(100, 100, 400, 400);
frame.setVisible(true);
}
}
 
事件适配器的常用的几种写法:
(1),用内部类的方式实现
(2),外部类实现
(3),当前类本身实现
(4),匿名内部类实现

java 图形化小工具Abstract Window Toolit 事件处理的更多相关文章

  1. java 图形化小工具Abstract Window Toolit

      老掉牙的历史 Java1.0在发布的时候,就为我们提供了GUI操作的库,这个库系统在所有的平台下都可以运行,这套基本的类库被称作抽象窗口工具集(Abstract Window Toolit),简称 ...

  2. java 图形化小工具Abstract Window Toolit :画笔Graphics,画布Canvas(),弹球小游戏

    画笔Graphics Java中提供了Graphics类,他是一个抽象的画笔,可以在Canvas组件(画布)上绘制丰富多彩的几何图和位图. Graphics常用的画图方法如下: drawLine(): ...

  3. java 图形化小工具Abstract Window Toolit 常用组件:对话框Dialog FileDialog

    对话框 Dialog是Window类的子类,是1个容器类,属于特殊组件,对话框是可以独立存在的顶级窗口,因此用法与普通窗口的用法几乎完全一样.但对话框有如下两点需要注意. (1),对话框通常依赖于其他 ...

  4. java 图形化小工具Abstract Window Toolit ImageIO缩放图片,添加水印

    实现步骤: 读取图像Image src = ImageIO.read 创建目标图像BufferedImage distImage = new BufferedImage(dstWidth, dstHe ...

  5. java 图形化小工具Abstract Window Toolit 画笔 处理位图

    具体编程来处理位图 知识点: 实现逻辑: 画板上的图片 new BufferedImage(canvasWidth,canvasHeight,BufferedImage.TYPE_INT_BGR); ...

  6. java 图形化小工具Abstract Window Toolit 菜单项

    AWT 中的菜单由如下几个类组合而成 MenuBar: 菜单条,菜单的容器. Menu: 菜单组件,菜单项的容器,它也是Menultem的子类,所以可作为菜单项使用. PopupMenu: 上下文菜单 ...

  7. java 图形化小工具Abstract Window Toolit 常用组件

    基本组件 Button: 按钮,可接受单击操作 Canvas: 用于绘图的画布 Checkbox: 复选框组(也可变成单选框组件) CheckboxGroup: 用于将多个checkbox组件组合成一 ...

  8. java 图形化小工具Abstract Window Toolit ;布局管理器FlowLayout流式布局;BorderLayout边界布局;GridLayout网格布局;CardLayou重叠卡片布局;BoxLayout方框布局;绝对定位

    1.FlowLayout流式布局管理器: FlowLayout布局管理器中,组件像水流一样向某方向流动(排列),遇到障碍(边界)就折回,重头开始排列 .在默认情况下,FlowLayout局管理器从左向 ...

  9. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

随机推荐

  1. Jenkins系列-权限管理

    在实际工作中,存在多个团队都需要Jenkins来实现持续交付,但是又希望不同团队之间进行隔离,每个项目有自己的view, 只能看到自己项目的jenkins job. 但是,jenkins默认的权限管理 ...

  2. [LCT学习时的一些笔记]

    会找时间写一篇学习笔记的. \(Access\)的操作是把\(x\)和\(x\)所在原树的顶端点的路径变为一个\(splay\) 对于原树边我们有这样的操作,对每个\(splay\)的顶点维护一个父亲 ...

  3. Codeforces 1149C - Tree Generator™(线段树+转化+标记维护)

    Codeforces 题目传送门 & 洛谷题目传送门 首先考虑这个所谓的"括号树"与直径的本质是什么.考虑括号树上两点 \(x,y\),我们不妨用一个"DFS&q ...

  4. C++ and OO Num. Comp. Sci. Eng. - Part 5.

    类 class 关键字提供了一种包含机制,将数据和操作数据的方法结合到一起,作为内置类型来使用. 类可以包含私有部分,仅其成员和 friend 类访问,公有部分可以在程序中任意位置处访问. 构造函数与 ...

  5. [Ocean Modelling for Begineers] Ch5. 2D Shallow-Water Modelling

    本章利用二维浅水模型研究表面重力波的不同物理过程,如湖水中风驱动流体,正压不稳定机制(?the barotropic instability mechanism).本章将为读者介绍使用不同的对流格式模 ...

  6. NCBI SRA数据如何进行md5校验?

    下了一些sra数据库中的公共数据,因为pretech和aspera不稳定,稍微大点的文件经常传断,部分文件我只能通过本地下载再上传. 那么问题来了,sra没有md5校验,我怎么知道我数据的完整性,尤其 ...

  7. 多组学分析及可视化R包

    最近打算开始写一个多组学(包括宏基因组/16S/转录组/蛋白组/代谢组)关联分析的R包,避免重复造轮子,在开始之前随便在网上调研了下目前已有的R包工具,部分罗列如下: 1. mixOmics 应该是在 ...

  8. C/C++ Qt StandardItemModel 数据模型应用

    QStandardItemModel 是标准的以项数据为单位的基于M/V模型的一种标准数据管理方式,Model/View 是Qt中的一种数据编排结构,其中Model代表模型,View代表视图,视图是显 ...

  9. 半天做完的数据报表,YonBuilder只要十几分钟,0代码开发

    进入数字化时代,拍脑袋的决策方式显然不靠谱,一切要靠数据说话.与信息化时代相比,数字化时代的企业对数据的应用更广泛.更深入.为了应对激烈的市场竞争,企业经营决策者们对数据的依赖度越来越高,企业各个业务 ...

  10. 日常Java测试 2021/11/14

    课堂测试三 package word_show; import java.io.*;import java.util.*;import java.util.Map.Entry; public clas ...