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类的一些理解的更多相关文章

  1. 解析java实体类

    对java实体类的众多理解: A .就是属性类,通常定义在model层里面 B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段. 好处: 1.对对象实体的封装,体现OO思想. 2.属性可以 ...

  2. 深入理解java虚拟机【Java Class类文件结构】

    Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码 ...

  3. (转)《深入理解java虚拟机》学习笔记5——Java Class类文件结构

    Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码 ...

  4. Java中Class和单例类的作用与类成员的理解

    Java中Class类的作用与深入理解 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识.这个信息跟踪着每个对象所属的类.JVM利用运行时信息选择相应的方法执行.而保存 ...

  5. java数据库连接类,已经把数据库操作的方法都封装好了

    在这里分享一个已经封装好了的java数据库连接类,只要创建对象就可以实现数据库的增删改查操作,用过都说好.其实这个不是我自己写的,是一个理解和学习能力超高的朋友写的,他也很乐于分享交流,本人也深受他的 ...

  6. java复用类

    java复用类英文名叫reusing classes  ,重新使用的类,复用的意思就是重复使用的类,其实现方法就是我们平常使用的组合和继承: 1.组合: has-a 的关系  (自我理解:组合就是我们 ...

  7. 从字节码和JVM的角度解析Java核心类String的不可变特性

    1. 前言 最近看到几个有趣的关于Java核心类String的问题. String类是如何实现其不可变的特性的,设计成不可变的好处在哪里. 为什么不推荐使用+号的方式去形成新的字符串,推荐使用Stri ...

  8. Java开发知识之Java字符串类

    Java开发知识之Java字符串类 一丶简介 任何语言中.字符串都是很重要的.都涉及到字符串的处理. 例如C++中. 字符串使用内存. 并提供相应的函数进行处理 strcmp strcat strcp ...

  9. Java内存管理的进一步理解-模拟过程图解

    Java内存管理的进一步理解-模拟过程图解--转载 java的内存管理分为: 1.堆内存:2.栈内存:3.方法区:4.本地方法区 /* 1:方法区      方法区存放装载的类数据信息包括:      ...

随机推荐

  1. SQL Server温故系列(5):SQL 查询之分组查询 GROUP BY

    1.GROUP BY 与聚合函数 2.GROUP BY 与 HAVING 3.GROUP BY 扩展分组 3.1.GROUP BY ROLLUP 3.2.GROUP BY CUBE 3.3.GROUP ...

  2. scrapy基础知识之 使用FormRequest.from_response()方法模拟用户登录:

    通常网站通过 实现对某些表单字段(如数据或是登录界面中的认证令牌等)的预填充 使用Scrapy抓取网页时,如果想要预填充或重写像用户名.用户密码这些表单字段, 可以使用 FormRequest.fro ...

  3. S7-300CPU存储器介绍及存储卡使用

    1. S7 300存储区概述 S7-300 PLC的存储区可以划分为四个区域:装载存储器(Load Memory).工作存储器(Work Memory). 系统存储器(System Memory)和保 ...

  4. C语言学习书籍推荐《C Primer Plus(中文版)(第5版)》下载

    普拉塔 (Prata S.) (作者), 云巅工作室 (译者) <C Primer Plus(中文版)(第5版)>共17章,介绍了C语言的基础知识,包括数据类型.格式化输入输出.运算符.表 ...

  5. Spark 中 RDD的运行机制

    1. RDD 的设计与运行原理 Spark 的核心是建立在统一的抽象 RDD 之上,基于 RDD 的转换和行动操作使得 Spark 的各个组件可以无缝进行集成,从而在同一个应用程序中完成大数据计算任务 ...

  6. Spring Boot日志使用

    前言: 这是我第一次仔细研究Spring Boot相关的知识,就拿日志下手了,欢迎大家指点 Spring Boot日志关系 这个是Spring Boot的启动器,我们点击spring-boot-sta ...

  7. Python之爬虫有感(一)

    urllib.request.Request('URL',headers = headers)User-Agent 是爬虫和反爬虫斗争的第一步,发送请求必须带User—Agent使用流程:    1. ...

  8. TensorFlow笔记-文件读取

    小数量数据读取 这些只用于可以完全加载到内存中的小型数据集: 1,储存在常数中 2,储存在变量中,初始化后,永远不改变它的值 使用常量 training_data = ... training_lab ...

  9. mysql8.0.15创建数据库和是删除数据库及删除用户

    ---恢复内容开始--- 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons) 1.首先安装mysql8.0.15 2.Mys ...

  10. SQLyog 破解版

    百度云:链接:http://pan.baidu.com/s/1eSMEzIE    密码:ubi2