2.事件响应编程
事件响应编程需要完成如下两步。
(1)定义事件监听器类,并完成事件响应方法。
(2)创建监听器对象,将事件监听器对象注册在负责监听的组件对象上。
从下面的例子来学习事件响应编程:如图2.9.1所示,窗口中有两个按钮,单击“RED”按钮时,窗口背景变红色;单击“GREEN”按钮时,窗口背景变绿色。
图2.9.1 事件响应案例界面
【代码9.1】事件响应案例
事件响应编程的第一步是定义事件监听器类。一个类要成为事件监听器,需要满足2个条件。
(1)实现某种监听器接口。
针对不同种类的事件,实现不同的监听器接口,监听器接口名字都以Listener结尾。各种监听器对应各自的响应方法(即接口中的抽象方法)。根据需要监听的事件种类,选择要实现哪个或哪些监听器。
Action Listener用来监听按钮单击事件、在文本框中单击回车键事件、双击列表框中的选项事件或选中菜单项事件。在本例中,需要监听按钮单击事件。在代码9.1中,Face类实现了Action Listener接口,成为监听器类,见第8行。
(2)实现监听器接口对应的所有抽象方法。
一个类要实现某个接口,就必须实现接口中的所有抽象方法,不然,这个类就成了抽象类。另外,实现的事件监听器中的抽象方法是在事件发生的时候自动调用的,这些方法就是事件的响应方法,方法内容就是当事件发生时要做的响应内容。监听到的事件对象会通过参数传入响应方法。响应方法见代码9.1的第36行到第44行。
Action Listener接口对应的响应方法是actionPerformed(Action Evente),监听到的事件对象通过响应方法的参数e传过来。因为界面中有两个按钮,两个按钮由同一个监听器来监听,两个按钮中的任一个按钮被单击时,都会触发这个响应方法,所以,先要根据监听到的事件对象,了解事件源是哪个按钮。
String btnLabel=e.getActionCommand();//获得事件源按钮上面的标签
按钮上都有标签,通过getActionCommand()方法可获得按钮上的标签,根据标签识别被按下的按钮是哪个,然后分别给予不同的响应操作。
事件响应编程的第二步是注册监听器对象,见代码9.1的第25行、第27行。将监听器对象注册给事件源后,事件源组件就处于监听状态,在监听到事件发生之后,就将事件对象传给响应方法去处理。
按钮单击事件的数据源是按钮,所以当前的两个按钮都要注册监听器对象。而监听器的类就是本类,所以在代码9.1中用this来指代监听器对象。