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

事件驱动模型: 

  

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

                     

原理分析:

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

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

 

实例分析:

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

       1.注册监听器。

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

             

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

         

       2.事件发生。

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

                    

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

          为时序图:

         

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值