事件处理机制在框架的应用
一直想归纳一下工作中遇到的各种事件处理机制,分成三个部分写吧。第一,是关于事件处理机制的内含,这一点网上很多了,但是我会补充一些自己的见解;第二,事件处理机制在框架中的各种应用,包括场景和相应特点(包括优缺点),解决了什么问题,又产生了什么问题;第三,这是核心了,也是我的理想追求,如何设计出好的事件处理机制的方案,尤其是高性能的、轻量化的事件处理机制。限于自身技术水平,会产生一些问题,我也会持续不断的修正更新。
《一》Java事件处理机制初步介绍
根据下图,结合生活实际,可以得知监护人可以有多个,坏人对小孩的操作可以是打,也可以是爱。
得出结论:
一个事件源并不代表只有一个事件监听者,它可以有多个事件监听者。
Java事件处理机制涉及三个成员:事件源、事件和事件监听器
事件源:Java的AWT或Swing组件,该组件就是事件源,通过new关键字即可创建
事件:由系统自动产生
事件监听器:整个事件处理的核心。
完整的事件处理程序
1. 定义事件监听器类,必须实现XxxListener接口
2. 完成事件处理器中方法的填写,规定特定的事件发生时执行的动作
3. 创建事件监听器类的实例并添加进组件
package TestEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MouseEvent {
public static void main(String[] args) {
JButton jbtn = new JButton("btn");
jbtn.setSize(40, 30);
BtnMouseListener btnML = new BtnMouseListener();
jbtn.addMouseListener(btnML);
JFrame jf = new JFrame("事件处理");
jf.add(jbtn);
jf.setSize(300, 200);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
}
package TestEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
/**
*
* @author yxc
*
*/
public class BtnMouseListener implements MouseListener{
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("鼠标点击");
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("鼠标进入");
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("鼠标离开");
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}
演示效果——
jdk自带的事件监听接口和对应事件如下:
当然了,我们也可以自定义相关的监听接口,关键是懂原理
---------------------------------------------------
作者:杨兮臣
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用闲暇时间,把自己毕生所学整理一下,感谢行业的技术大咖