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. .Net之Layui多图片上传

    前言: 多图上传在一些特殊的需求中我们经常会遇到,其实多图上传的原理大家都有各自的见解.对于Layui多图上传和我之前所说的通过js获取文本框中的文件数组遍历提交的原理一样,只不过是Layui中的up ...

  2. Jsoup配合 htmlunit 爬取异步加载的网页

    加入 jsoup 和 htmlunit 的依赖 <dependency> <groupId>org.jsoup</groupId> <artifactId&g ...

  3. kuangbin专题 专题一 简单搜索 迷宫问题 POJ - 3984

    题目链接:https://vjudge.net/problem/POJ-3984 这个题目,emm,上代码,看的估计应该是刚开始接触搜索的,我带点注释,你能慢慢理解. #include <ios ...

  4. c++学习书籍推荐《C++ Primer Plus中文版(第6版)》下载

    百度云及其他网盘下载地址:点我 编辑推荐 一本经久不衰的C++畅销经典教程:一本支持C++11新标准的程序设计图书.  它被誉为“开发人员学习C++的教程,没有之一”! Amazon网站“Langua ...

  5. WPF 入门笔记之控件内容控件

    一.控件类 在WPF中和用户交互的元素,或者说.能够接受焦点,并且接收键盘鼠标输入的元素所有的控件都继承于Control类. 1. 常用属性: 1.1 Foreground:前景画刷/前景色(文本颜色 ...

  6. 【转载】DOMContentLoaded与load的区别

    DOMContentLoaded与load的区别   (1)在chrome浏览器的开发过程中,我们会看到network面板中有这两个数值,分别对应网 络请求上的标志线,这两个时间数值分别代表什么? ( ...

  7. python 2.7 - 3.5 升级之路 (一) : 准备阶段开发环境 -- pip3, vitualEnv, pycharm

    背景 由于之前项目采用的版本是Python2.7, 考虑到Python 2.7 到明年(2020年后将会停止更新),以及为了更好的适应中文和拥抱新的特性.我们决定将其从python 2 升级到最新的 ...

  8. Tomcat(Windows)

    百度云:链接:http://pan.baidu.com/s/1pKYrf79    密码:56t0 官网下载网址:http://archive.apache.org/dist/tomcat/tomca ...

  9. .Net MVC 动态生成LayUI tree

    .Net MVC 动态生成LayUI tree 最近在做项目的过程中需要用到Tree插件,所以找了一堆Tree发现LayUI的Tree样式比较好看,所以开始搞! 1.Layui部分 1.1 首先引用文 ...

  10. [POJ2823] Sliding Window 「单调队列」

    我们从最简单的问题开始: 给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k. 要求:   f(i) = max{ a(i-k+1),a(i-k+2),..., a(i) },i ...