Java中事件处理事件监听机制

学习Java用的是《Java核心技术》第9版。关于Java的时间监听机制,很有趣,这儿做一个记录。

Java中对事件处理的方式是:其控制事件源(event source),例如,按钮或滚动条,到事件监听器(event listener)的传递过程,并将任何对象指派给事件监听器。当然,应该选一个能便于响应事件的对象。

事件源有一些向其注册事件监听器的方法。当一个事件源产生一个事件时,它会向它的所有注册的事件监听器发送一个通告。

Java将事件相关信息都封装在一个事件对象(event object)中,所有的事件对象都派生于 java.util.EventObject 类。当然,每个事件类型还有子类,例如,ActionEvent,WindowEvent.

不同的事件源会产生不同类别的事件。例如,按钮可以发送一个ActionEvent对象,窗口可以发送WindowEvent对象。


那么下面,给出AWT事件处理机制的概要:

 - 监听器对象是一个实现了特定监听器接口(listener interface)的实例

 - 事件源是一个能够注册监听器对象并发送事件对象的对象

 - 当事件发生时,事件源将事件发送给其注册的所有事件监听器

 - 监听器对象将利用事件对象中的信息决定如何对事件做出响应


下面是监听器的一个实例:

   ActionLlistener listener = ...;
   JButton button = new JButton("test");
   button.addActionLlistener(listener);

现在,只要按钮产生一个“动作事件”,listener对象就会得到一个通告。对于按钮来说,“动作事件”就是点击按钮。

为了实现ActionListener接口,监听器类必须有一个actionPerformed方法,该方法接受一个ActionEvent对象参数。

public class MyListener implements ActionListener{
    ...
    public void actionPerformed(ActionEvent event){
        // reaction to button click goes here
    }
}
只要用户点击按钮,JButton的对象就会创建一个ActionEvent对象,然后调用listener的actionPreformed传递事件对象。可以将多个监听器对象,添加到一个像按钮这样的事件源上。这样,只要点击按钮,按钮就会调用所有的监听器的actionPreformed方法。


你可能感兴趣的:(Java)