Java事件驱动模型学习(JList)

事件驱动模型: 

  

            事件监听器<--注册--事件源--当事件发生时通知-->事件监听器 

                     

原理分析:

       任何事件监听器XXXListener都是一个接口,继承于EventListener,其中包括事件发生时的处理方法。

       而每个事件源都有一个事件监听器列表EventListenerList,当事件源调用addXXXListener注册事件监听器XXXListener时,在addXXXListener方法内将调用EventListenerList的add方法将监听器及其class属性加入监听器列表中。当某种事件发生时,事件源根据事件类型(class属性)遍历EventListenerList找到相应的监听器,执行相应的处理方法。

 

实例分析:

       ListModel是事件源,JList是时间监听器,发生ListDataEvent。主要针对ListModel发生变化时,JList随之改变这种情况。

       1.注册监听器。

          JList有个内部类AccessibleJList实现了ListDataListener,重写了

            public void intervalAdded(ListDataEvent e){}  

           并在构造方法内调用了JList的getModel方法得到ListModel,然后为其添加监听器。

          JList.this.getModel().addListDataListener(this);

       2.事件发生。

          当调用ListModel(DefaultListModel)的add()等方法时,改变了ListModel,所有会调用ListModel的方法

          protected void fireIntervalAdded(Object source, int index0, int index1) //激活元素添加导致的ListDataEvent           

在fireIntervalAdded内部会遍历事件监听器列表查找ListDataListener,然后调用该监听器的intervalAdded()方法。下

          为时序图:

          Java事件驱动模型学习(JList)_第1张图片

你可能感兴趣的:(java,object,Class)