Java中事件监听机制

一、事件监听机制的定义

要想了解Java中的事件监听机制,首先就要去了解一下在Java中事件是怎样去定义的呢!在使用Java编写好一个界面后,我们就会对界面进行一些操作,比如,在输入框中输入数据,点击按钮或者菜单,这些操作我们就称之为事件
事件监听机制,顾明思义,就是去监听事件有没有发生,类似于我们要监视一间房子里面会发生什么样的事情,就会给这座房子按上一个摄像头。对于这样的事件的处理,在Java中也有类似的机制。比如我们需要去监听一个按钮有没有被点击,就要给按钮上装上类似监视器的东西。这个东西我们就把它叫做事件监听器。而监听按钮有没有被点击的这种机制就是事件监听机制
在Java当中,每一个事件都会有对应的事件监听器。他们都被定义在Java.awt.event这个包当中:

二、事件监听机制的组成

1)事件对象,即通常继承 Java.awt.eventObjec t的对象,一般可以用来判断事件类型的作用;
2)事件源,即触发事件的源头,在GUI和Swing编程中,如Button按钮等对象就是一个事件源;
3)事件监听器,即负责监听事件源发出的事件并做出响应动作的对象,通常实现 java.util.EventListener接口

三、事件监听的一般流程

1)事件源注册监听器
2)事件发生时,事件源向监听器发送事件对象
3)监听器对象响应事件

四、给组件添加监听器

由于事件监听器的是定义都是接口,所以我们必须自己定义一个类来实现对应的接口。 比如,我们要监听一个按钮是否被点击了,可以这样做,代码如下:

package com.yf1006;
import java.awt.event.ActionEvent;//通过定义一个ButtonListener类来实现对应的接口,这样一个简单的动作事件监听器实现:监听按钮是否被点击了!
//其中java.awt.event.ActionListener是一种动作监听器,它是属于一种接口的,所以需要定义一个类来实现接口的!!
public class ButtonListener implements java.awt.event.ActionListener{//在这里必须要重写接口中的方法:事件发生时,这个方法被自动调用了。public void actionPerformed(ActionEvent e) {System.out.println("按钮被点击了!");}}

这样,就可以完成一个事件监听器类的编写,但是我们需要创建一个主类所谓的主类,即类的名字和文件名一致,并且包含main函数的类),在主类中去添加按钮等组件,并且创建监听器对象,然后再将监听器添加给按钮,从而完整地实现一个按钮的监听事件机制。例子的代码如下:

package com.yf1006;//import java.awt.Dimension;//import javax.swing.JLabel;//import java.awt.FlowLayout;//import javax.swing.JFrame;public class Login_test {public static void main(String[] args) {Login_test log = new Login_test();log.showUI();}public void showUI() {//创建窗口javax.swing.JFrame jf = new javax.swing.JFrame();jf.setSize(600, 600);jf.setTitle("窗口");//居中显示jf.setLocationRelativeTo(null);//关闭进程jf.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);//流式布局管理器java.awt.FlowLayout fl = new java.awt.FlowLayout();jf.setLayout(fl);//导入图片javax.swing.ImageIcon img = new javax.swing.ImageIcon("F:\\桌面\\1.jpg");//为啥导入照片2则没有啥用呢//标签(导入的图片是需要先赋给标签,通过标签的形式去给窗体上面加图片)javax.swing.JLabel jl = new javax.swing.JLabel(img);jf.add(jl);//用户名javax.swing.JLabel user = new javax.swing.JLabel("账户");jf.add(user);//文本框javax.swing.JTextField jtf = new javax.swing.JTextField();java.awt.Dimension dim = new java.awt.Dimension(400, 40);jtf.setPreferredSize(dim);jf.add(jtf);//用户名1javax.swing.JLabel user1 = new javax.swing.JLabel("密码");jf.add(user1);//文本框1javax.swing.JTextField jtf1 = new javax.swing.JTextField();java.awt.Dimension dim1 = new java.awt.Dimension(400, 40);jtf1.setPreferredSize(dim1);jf.add(jtf1);//按钮javax.swing.JButton jb = new javax.swing.JButton("登录");jf.add(jb);//利用ButtonListener类,创建监听器对象ButtonListener bl = new ButtonListener();//将监听器添加给按钮jb.addActionListener(bl);//可视化jf.setVisible(true);}
}

输出的结果:

Java中事件监听机制相关推荐

  1. java监听机制_详解java的事件监听机制和观察者设计模式

    首先说说监听器: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执 行. java的事件监 ...

  2. java中事件监听_Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

  3. java监听com口_简单了解Java接口+事件监听机制

    1.接口: 定义方法: public interface interName //extends interName2, interName3...可继承多个接口 在接口里只能定义常量和抽象方法. p ...

  4. java中事件监听的实现

    一. 什么是监听事件 在程序执行过程中对某一个功能或者事件进行监听.例如,用户登录成功后,发送短信或者邮件信息给用户. 二.如何完成监听事件 监听事件是基于观察者模式实现的,要完成监听事件,需要准备好 ...

  5. java中事件监听是什么意思_Java的事件监听器学习心得

    在Java的swing编程中,Java中的事件机制非常常用 一. 事件监听器的参与者: 1.事件对象: 一般继承自java.util.EventObject对象,由开发者自行定义. 2.事件源: 就是 ...

  6. 用java的事件监听机制实现一个简单的画板应用:通过选择图形按钮和颜色按钮来画出自己想画的图形:直线、空心矩形、圆形、折线、多边形、圆角矩形、弧线、曲线、喷枪

    今天做一个简单的画板,完整代码附在文章末尾处. - 功能:通过选择图形按钮和颜色按钮来画出自己想画的图形. - 界面展示: - 思路: 1.做一个可视化界面:创建JFrame对象,并设置Title.S ...

  7. Spring容器的事件监听机制(简单明了的介绍)

    文章目录 前言 事件 1. 定义事件 2. 定义监听器 3. 定义发布器 Spring容器的事件监听机制 1.事件的继承类图 监听器的继承类图 总结 前言 上一篇我们介绍了SpringFactorie ...

  8. springBoot启动事件监听机制

    springBoot启动之事件监听机制源码解析 1. Java的事件监听机制 在进行正式的分析之前,先介绍一下Java的事件监听机制.参考05–SpringBoot启动之事件监听机制 Java事件监听 ...

  9. java swing事件监听_Java swing(awt):事件监听机制的实现原理+简单示例

    (1)实现原理 事件监听机制的实现: 参考图:事件模型_ActionEvent 为了节省资源,系统无法对某个事件进行实时的监听.故实现的机制是当发生某个事件后,处理代码将被自动运行,类似钩子一般.(回 ...

最新文章

  1. 独家 | 我们扒出了这家中国创业公司,竟比苹果iPhone X早两年推出黑科技,还不用借助深度摄像头
  2. Docker系列 七. Docker 安装Jenkins
  3. opencv中的waitKey(0)不起作用
  4. 一个简单的记事本程序
  5. jdk安装好后没有jre,手动生成jre
  6. 【机器学习】机器学习中必知必会的 8 种降维技术,最后一款超硬核!
  7. 看完这个“秒杀”设计方案!我有点慌了
  8. [css] body{height:100%}和html,body{height:100%}有什么区别?为什么html要设置height:100%呢,html不就是整个窗口吗?
  9. java多线程之生产者消费者问题
  10. 线性规划 (一) 线性规划的基本形式及各种概念
  11. 179 Largest Number 把数组排成最大的数
  12. python爬取汽车之家数据_Python神技能 | 使用爬虫获取汽车之家全车型数据
  13. AD选择板边覆铜教程
  14. 零基础学HCIE难度大吗?
  15. 服务器开机自检提示信息,hp服务器开机自检报错提示
  16. 思维导图软件Mindmanager2018下载
  17. 《UNIX环境高级编程》笔记 第十章-信号
  18. Netlogo入门(一)
  19. 【LeetCode】86. 分隔链表
  20. 树形json扁平化,一维数组树状化,对象深拷贝,元素后插入新元素,格式或动态路由等常用js合集

热门文章

  1. 使用 OpenCV 和 Python 模糊和匿名化人脸
  2. java开怎么能不知道Netty几个核心类呢?
  3. 计算机 时代,计算机时代,你准备好了吗
  4. php内外边距,选择器与内外边距使用方法(margin,padding使用)-2019年9月4日
  5. 1、Kubernetes 简介
  6. pythonsocket自动化教程_python---socket自动化交互
  7. 华为鸿蒙vivo,华为鸿蒙成功的关键:要让小米、OPPO、VIVO都用上鸿蒙
  8. 和为s的连续正数序列java_剑指Offer41:和为S的连续正数序列(Java)
  9. java 正则 反向引用_正则之反向引用
  10. 阿里开源混沌工程工具 ChaosBlade