Java ActionListenner类的一些理解
Java的ActionListenner事实上我去年年这个时候大概就已经接触到了,也学会了比较简单的使用。但却始终不能理解ActionListenner的一系列的运行是怎么维持这么一个联系的?
我产生了很多疑问,但却无法解决,也许是当初实在对Java理解得太浅了。
在一年后的今天,我再次接触到了ActionListenner,且有了一些新的个人的理解,特在此记录。
正文:
首先我一开始所产生的几个疑问:
为什么要有ActionListenner?
ActionListener是什么?
ActionListenner如何使用?
ActionListenner是如何与事件(我的操作,例如:点击某个按钮)产生的联系?
个人理解: 这些问题提得有点太大了,或许并不是我现在能定义的,但是我想暂且回答一下之前的自己,以达到一个记录与学习的作用吧。
为什么要有ActionListenner?
计算机通过键盘和鼠标进行操作,但是键盘和鼠标所谓的"输入"和"点击",其实仅仅是传送给了电脑。而我们所看见的点击"X",就关闭对应的页面。我打按下键盘"jianpan",输入法就直接出现了一系统可能的提示结果(1.键盘 2.监盘..)让我进行选择。
而如若我们没有各种编程语言中的事件监听类或者方法,那么我们就无法实现这么神奇和优质的人机交互。
如若没有事件监听:
我点击关闭,电脑硬件收到了一个点击的信号,而软件没有任何处理信息的方法,那么也无从关闭,甚至我们连移动鼠标光标也无法做到,人无法与电脑交互,也就是人无从使用电脑。
ActionListener是什么?
根据我所看得Java的ActionListener类发现:这个类是一个接口类,且这个类里面只定义了一个方法。
public interface ActionListener extends EventListener {
/**
* Invoked when an action occurs.
* @param e the event to be processed
*/
public void actionPerformed(ActionEvent e);
}
以上便是Java的ActionListener类,其中actionPerformed是任何继承了这个类都要重写的方法,这个方法可以接收到 ActionEvent e 也就是事件,目前我们暂且不谈什么事件会被传送至这个函数。而对于这个函数的功能来说,很显然:我们可以根据传入的事件的不同,进行不同的处理操作,这个函数也就是一个处理事件的一个函数。而这个类又主要只有这么一个函数(它继承了EventListener,也可能有其他方法)。所以这个类我总结一下是 : 作为一个监听类接口,以规范实现它的类,防止实现的时候忘记对事件信息的处理的一个接口类。
ActionListenner是如何与事件(我的操作,例如:点击某个按钮)产生的联系?
我之所以先回答这个问题在于我认为,如若不知道这个联系是如何产生的,那么就不知道如何好地使用这个类。
首先:ActionListenner是一个接口,那么自然需要一个类去实现它,而实现它的那个类一定需要重写该接口内部的actionPerformed方法,那么就实现了一个可以处理事件信息的功能,而事件从何而来,则是关于另一个方法:注册监听(addActionListener),对于窗口类或者一些组件类都具有这个方法,也可以不准确地说:对于一切可能产生事件信息的类都有这种方法,且这个方法需要传入一个参数,这个参数是一个实现了ActionListenner的事件监听类。
ActionListenner如何使用?以及对产生联系的具体阐述。
举例:一个处于某个窗口类(myFrame)的某个按钮实例button需要实现一个功能即:按下这个按钮,当前对应的窗口背景颜色就变成红色。
那么我们可能需要在窗口类中处理这个按钮的信息,因为设置背景颜色这个操作很可能需要使用到这个类的一些方法,所以我们明确了处理信息在myFrame这个类中,那么就得先实现ActionListenner接口以及它内部的方法来实现对于事件信息的处理,然后我们可能需要在这个方法里面进行一些列的操作:如若我接收到了这个信息,那么我就调整背景颜色,这么个逻辑关系。但至今我们是还没有事件信息会传进来的,因为还没有任何一个"可能产生事件信息的类"在注册监听时传入了这个类产生的引用(this),所以我们还需要使用我们之前的button这个实例去注册监听,并且将this(因为button也在myFrame类内)传入。这时候就达成了一种具体的联系:鼠标在button坐标位置点击了一下,操作系统取得了鼠标的点击操作依据当前光标的坐标,然后对所有注册了监听的控件进行坐标比对,然后得知了点击在button这个控件上,于是根据注册监听时候的地址,找到了并将点击事件消息发送方给了当前button这个对象所属的一个以myFrame创建的实例,然后根据这个类中的处理事件信息的方法模块对信息进行了处理(将背景设置成了红色)。
Java ActionListenner类的一些理解的更多相关文章
- 解析java实体类
对java实体类的众多理解: A .就是属性类,通常定义在model层里面 B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段. 好处: 1.对对象实体的封装,体现OO思想. 2.属性可以 ...
- 深入理解java虚拟机【Java Class类文件结构】
Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码 ...
- (转)《深入理解java虚拟机》学习笔记5——Java Class类文件结构
Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码 ...
- Java中Class和单例类的作用与类成员的理解
Java中Class类的作用与深入理解 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识.这个信息跟踪着每个对象所属的类.JVM利用运行时信息选择相应的方法执行.而保存 ...
- java数据库连接类,已经把数据库操作的方法都封装好了
在这里分享一个已经封装好了的java数据库连接类,只要创建对象就可以实现数据库的增删改查操作,用过都说好.其实这个不是我自己写的,是一个理解和学习能力超高的朋友写的,他也很乐于分享交流,本人也深受他的 ...
- java复用类
java复用类英文名叫reusing classes ,重新使用的类,复用的意思就是重复使用的类,其实现方法就是我们平常使用的组合和继承: 1.组合: has-a 的关系 (自我理解:组合就是我们 ...
- 从字节码和JVM的角度解析Java核心类String的不可变特性
1. 前言 最近看到几个有趣的关于Java核心类String的问题. String类是如何实现其不可变的特性的,设计成不可变的好处在哪里. 为什么不推荐使用+号的方式去形成新的字符串,推荐使用Stri ...
- Java开发知识之Java字符串类
Java开发知识之Java字符串类 一丶简介 任何语言中.字符串都是很重要的.都涉及到字符串的处理. 例如C++中. 字符串使用内存. 并提供相应的函数进行处理 strcmp strcat strcp ...
- Java内存管理的进一步理解-模拟过程图解
Java内存管理的进一步理解-模拟过程图解--转载 java的内存管理分为: 1.堆内存:2.栈内存:3.方法区:4.本地方法区 /* 1:方法区 方法区存放装载的类数据信息包括: ...
随机推荐
- 微信小程序源码
内带scroll滚动轮播:如图: 微信小程序开发工具:微信开发工具: 文件目录: images:小程序的图标 pages:小程序页面 utils:方法js git地址:https://gi ...
- 客户端持久化数据库---indexedDB使用
_ 阅读目录 一:什么是indexedDB数据库? 二:IndexedDB数据库操作 2.1 打开或创建数据库 2.2 创建对象仓库(或叫创建表) 2.3 创建索引 2.4 新增数据 2.5 读取数据 ...
- IDEA安装Scala
Scala的安装 使用scala必须有jdk windows下开发工具的安装(我这里使用的是IDEA) 打开IDE 进入这个页面,如果没有进入这个界面,而直接进入项目的话 请点击https://blo ...
- linux系统的基础优化
目录 前言 网络优化 在虚拟软件中配置虚拟局域网 接着可以配置自己windows主机的网络连接配置 在虚拟软件中虚拟机添加网卡 虚拟机中的系统基础优化 前言 在自己做linux的相关服务实验时,是没有 ...
- SpringBoot项目构建成jar运行后,如何正确读取resource下的文件
SpringBoot项目构建成jar运行后,如何正确读取resource下的文件 不管你使用的是SpringBoot 1.x还是SpringBoot2.x,在开Dev环境中使用eclipse.IEAD ...
- RestTemplate真实案例
1. 场景描述 现在越来越的系统之间的交互采用http+json的交互方式,以前用的比较多的HttpClient,后来用的RestTemplate,感觉RestTemplate要比httpClent简 ...
- Java面试题汇总---基础版(附答案)
基于我个人对面试的认知和招聘经验,在此我总结一下Java开发者的基础知识掌握要求,及应聘者面试的需要准备的内容. 首先,Java基础是每个面试官都会问到的,可能只是针对工作经验的多少,对问题追踪深度有 ...
- EPPLUS 实现excel报表数据及公式填充
年后工作第一天,根据客户要求修善EPPLUS报表. Epplus: Epplus是一个使用Open Office XML(Xlsx)文件格式,能读写Excel 2007/2010文件的开源组件 好处很 ...
- py+selenium+IE10【IE已停止工作】【已解决】
问题:跑自动化时,到某个用例IE就崩,提示已停止工作. 手工跑的时候,IE挂,提示“Internet Explorer 已经为了帮助保护您的计算机而关闭此网页”. 且每次都在需要调用flash插件 ...
- NOIP2018初赛题解 提高组