基础之石——事件处理机制
想要了解事件处理机制,首先,我们需要弄清楚三个部分:事件源、添加监听器方法、事件接口。
1、事件源:
什么可以成为事件源:所有图形化的控件(容器组件、元素组件)都可以成为事件源。
如何确定事件源:根据动作来确定事件源,即动作发生在哪个控件上,哪个控件就是事件源。
2、添加事件监听器方法:add...Listener(...Listener l);根据相应的动作可以替换...部分的内容,并绑定监听器对象l。例如添加动作监听器:addActionListener(al);(其中al为实例化的ActionListener对象或者实现了ActionListener接口的类的对象)。
3、事件接口或事件抽象类:根据add...Listener(...Listener l)来定义一个类实现这...Listener这个接口(或者继承已经实现了这个接口的抽象类)并具体实现其中的抽象方法。
事件处理执行流程:
事件源 >>>>>事件源上发生>>>>> 动作 >>>>>捕获动作>>>>> 监听器 >>>>>激活>>>>> 监听方法 >>>>>收集动作、事件源信息,封装到>>>>> ...Event >>>>>自动调用>>>>> 相应事件的处理方法
import java.awt.FlowLayout;
public class EventUI extends javax.swing.JFrame{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
EventUI UI = new EventUI();
UI.initUI();
}
/**
* 绘制窗体的方法
*/
public void initUI(){
// 设置窗体属性
this.setTitle("按钮事件处理");
this.setSize(new java.awt.Dimension(600,500));
this.setLayout(new java.awt.FlowLayout());
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);
javax.swing.JButton jbu = new javax.swing.JButton("动作按钮");
this.add(jbu);
java.awt.event.ActionListener al = new EventAcListener(); // 可以接口类型的引用变量
jbu.addActionListener(al); // 给事件源添加动作监听器
this.setVisible(true);
}
}
import java.awt.event.ActionEvent;
/**
* 定义一个来来处理发生点击按钮动作后的处理方法,实现动作监听器接口
* @author Daily
*
*/
public class EventAcListener implements java.awt.event.ActionListener{
/**
* 当动作发生时,调用此函数。具体定义此抽象方法
*/
public void actionPerformed(ActionEvent e){
System.out.println("进入实现监听器接口的类的动作发生方法!");
}
}