事件机制就是吃饭那件小事

2024-06-03 06:18
文章标签 事件 机制 小事 吃饭

本文主要是介绍事件机制就是吃饭那件小事,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 [img][/img]<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

引用
我们每天都要吃饭,那你想想吃饭的过程是怎样的呢?为什么说事件机制就是吃饭呢?




但在这之前我们先回顾一下事件机制的相关概念。

一.事件机制的组成  
其中有3大组成部分 : 1.事件源

                                                        2.事件监听方法

                                                        3.事件处理类

 

                1.1.事件源:一系列的可以接受相应动作的组件

                                    例如:按钮,标签,面板,画布等等。。。

                                  Q;  那我是不是可以说任何可以看到的对象都可以作为事件源呢? 

                                   A:  答案是肯定的。everything is ok!

               

                1.2事件监听器方法:用来接收(获取)相应动作的方法

                                   例如:动作监听器方法(addActionListener(ActionListener al))

                                                            按钮,标签,...单击,输入框中的回车操作

                                              鼠标监听器方法(addMouseListener(MouseListener ml))

                                                             事件源上触发鼠标的按下,松开,单击,进入,离开的操作

              鼠标移动监听器方法(addMouseMotionListene  (MouseMotionListener  mm))

                               事件源上触发鼠标移动或者鼠标按下拖动操作

                                               键盘监听器方法(addKeyListener(KeyListener kl))

                                                              在事件源上按下键盘操作时触发该方法

 

                      1.3事件处理类:用来处理获取监听后的一系列处理。

                                        首先,自定义一个类实现也可以说继承事件接口,也可也继承类(但是此类应该是接口的子类),当然此类中必须实现相应的处理方法。

                                        比如:我要监听一个按钮(事件源),判断按下后我要对一个画布进行处理,并把画布的对象传给事件处理类,此时我自定义的类可以继承接口(MouseListener)也可以继承MouseListener 的子类MouseAdapter

                      五子棋的监听部分代码

                         

 

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.JOptionPane;public class FivechessListener extends MouseAdapter{private Graphics g;private boolean flag = false;public FivechessListener(Graphics g) {// TODO Auto-generated constructor stubthis.g = g;}@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stubint x = e.getX();int y = e.getY();//计算行列及余数,行列的余数大于2/3size,则列行加1int X = (x - Digt.X) % Digt.size;int column = (x - Digt.X) / Digt.size;int Y = (y - Digt.Y) % Digt.size;int row = (y - Digt.X) / Digt.size;if(X> Digt.size/3*2){column++;}if(Y> Digt.size/3*2){row++;}//获取当前棋子的左上角坐标int x1 = Digt.X + column*Digt.size - Digt.size/2;int y1 = Digt.Y + row*Digt.size - Digt.size/2;//黑白交替if(Digt.array[row][column]==0){if(flag == false){g.setColor(Color.black);g.fillOval(x1,y1,Digt.size,Digt.size);flag = true;Digt.array[row][column]=-1;}else{g.setColor(Color.white);g.fillOval(x1,y1,Digt.size,Digt.size);flag = false;		Digt.array[row][column]=-1;}}//判断输赢if(Winchess.is_winorfalse(row,column)){if(g.getColor()==Color.black){JOptionPane.showMessageDialog(null, "黑棋胜利");}else {JOptionPane.showMessageDialog(null, "白棋胜利");}}System.out.println("row = " + row + "\t column=" + column);}}

 

                      通过上面的比较抽象的描述如果你还是不太理解监听机制,我就用吃饭来类比一下喽!

 

                      首先,事件源我可以看做我们的肚子或者胃,当我们消耗卡路里后,我们一般都会有饥饿的感觉,而这种感觉会通过神经末梢(可以看成一种一种媒介)的传递会刺激我们的大脑,并促使我们的大脑发出命令,对我们的肢体进行控制,也就我饿了,到时间我们该吃饭了,然后我们就会屁颠屁颠的去食堂大吃一顿。

 

                      这里的监听方法可以看成是神经,然后大脑即使我们继承的父类,大脑里专门管饥饿的脑区就是我们的实体类(继承大脑这个接口),然后大脑会发出命令,我们行动起来这个过程就是我们实现的方法相应的命令就是监听方法传过来的参数(对应的上面的代码即是画布对象)。

 

 

                    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这篇关于事件机制就是吃饭那件小事的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026197

相关文章

vue+elementui分页输入框回车与页面中@keyup.enter事件冲突解决

解决这个问题的思路只要判断事件源是哪个就好。el分页的回车触发事件是在按下时,抬起并不会再触发。而keyup.enter事件是在抬起时触发。 so,找不到分页的回车事件那就拿keyup.enter事件搞事情。只要判断这个抬起事件的$event中的锚点样式判断不等于分页特有的样式就可以了 @keyup.enter="allKeyup($event)" //页面上的//js中allKeyup(e

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

Spring中事务的传播机制

一、前言 首先事务传播机制解决了什么问题 Spring 事务传播机制是包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的。 事务的传播级别有 7 个,支持当前事务的:REQUIRED、SUPPORTS、MANDATORY; 不支持当前事务的:REQUIRES_NEW、NOT_SUPPORTED、NEVER,以及嵌套事务 NESTED,其中 REQUIRED 是默认的事务传播级别。

通知中心设置一个键盘的捕捉事件

//通知中心监听键盘的frame发生改变

XMG 触摸事件的处理过程

1.自己本身并不处理,顺着响应者链条向上传递,将事件交给响应者进行处理 2.touches默认做法:把事件传递到上一个响应者 3. super是父类不是父控件

多头注意力机制(Multi-Head Attention)

文章目录 多头注意力机制的作用多头注意力机制的工作原理为什么使用多头注意力机制?代码示例 多头注意力机制(Multi-Head Attention)是Transformer架构中的一个核心组件。它在机器翻译、自然语言处理(NLP)等领域取得了显著的成功。多头注意力机制的引入是为了增强模型的能力,使其能够从不同的角度关注输入序列的不同部分,从而捕捉更多层次的信息。 多头注意力机

Linux-笔记 线程同步机制

目录 前言 实现 信号量(Semaphore) 计数型信号量 二值信号量  信号量的原语操作 无名信号量的操作函数 例子 互斥锁(mutex) 互斥锁的操作函数 例子 自旋锁 (Spinlock) 自旋锁与互斥锁的区别 自旋锁的操作函数 例子 前言         线程同步是为了对共享资源的访问进行保护,确保数据的一致性,由于进程中会有多个线程的存在,

Spring 集成 RabbitMQ 与其概念,消息持久化,ACK机制

目录 RabbitMQ 概念exchange交换机机制 什么是交换机binding?Direct Exchange交换机Topic Exchange交换机Fanout Exchange交换机Header Exchange交换机RabbitMQ 的 Hello - Demo(springboot实现)RabbitMQ 的 Hello Demo(spring xml实现)RabbitMQ 在生产环境

Rust:Future、async 异步代码机制示例与分析

0. 异步、并发、并行、进程、协程概念梳理 Rust 的异步机制不是多线程或多进程,而是基于协程(或称为轻量级线程、微线程)的模型,这些协程可以在单个线程内并发执行。这种模型允许在单个线程中通过非阻塞的方式处理多个任务,从而实现高效的并发。 关于“并发”和“并行”的区别,这是两个经常被提及但含义不同的概念: 并发(Concurrency):指的是同时处理多个任务的能力,这些任务可能在同一时

ROS话题通信机制实操C++

ROS话题通信机制实操C++ 创建ROS工程发布方(二狗子)订阅方(翠花)编辑配置文件编译并执行注意订阅的第一条数据丢失 ROS话题通信的理论查阅ROS话题通信流程理论 在ROS话题通信机制实现中,ROS master 不需要实现,且连接的建立也已经被封装了,需要关注的关键点有三个: 发布方(二狗子)订阅方(翠花)数据(此处为普通文本) 创建ROS工程 创建一个ROS工程