本文主要是介绍事件机制就是吃饭那件小事,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
[img][/img]<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
?
?
?
?
一.事件机制的组成
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);}}
通过上面的比较抽象的描述如果你还是不太理解监听机制,我就用吃饭来类比一下喽!
首先,事件源我可以看做我们的肚子或者胃,当我们消耗卡路里后,我们一般都会有饥饿的感觉,而这种感觉会通过神经末梢(可以看成一种一种媒介)的传递会刺激我们的大脑,并促使我们的大脑发出命令,对我们的肢体进行控制,也就我饿了,到时间我们该吃饭了,然后我们就会屁颠屁颠的去食堂大吃一顿。
这里的监听方法可以看成是神经,然后大脑即使我们继承的父类,大脑里专门管饥饿的脑区就是我们的实体类(继承大脑这个接口),然后大脑会发出命令,我们行动起来这个过程就是我们实现的方法。相应的命令就是监听方法传过来的参数(对应的上面的代码即是画布对象)。
这篇关于事件机制就是吃饭那件小事的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!