说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

最近学习 java , 偶获心得, 贴出来与大家分享. 关键字: 事件处理, 匿名内部类

编辑:说三道四文库 发布时间:2017-09-22 02:22
HTML文档下载 WORD文档下载 PDF文档下载
// java 事件处理演示. 
// 本演示代码旨在说明 java 对事件处理的模型, 这个模型的关键就是匿名内部类.
// 关键字: anonymous inner class (匿名内部类)
// 作者: realdreamer


//事件接口, 封装事件被引发后, 被调用的方法原型.
interface MyEvent{
    //修改前向实体确认, 返回 true, 将修改它, 
    //返回 false, 不做修改并且 onValueChanged 也不会引发
    public boolean onBeforeChange(int newValue);
    public void onValueChanged(int currValue);  
}


//事件源, MyEvent 的相关事件将由它来引发
class EventSource {
    private int i;
    private MyEvent e;
    
    public void setValue(int i) {
        if (e != null) {
            if (e.onBeforeChange(i)) {
                this.i = i;
                e.onValueChanged(this.i);
            }
        }
        
        this.i = i;
    }   
    public int getValue() {
        return this.i;
    }
    public void addMyEventListener(MyEvent e) {
        this.e = e;
    }
}


////////////////////////////////////////////////////
////////////////////////////////////////////////////
//在 java 类库中, 有一大堆事件, 像上面一个类和一个接口的定义就是一个简单的模拟.
//你可以把类 EventSource 想象成 JButton, 把接口想象成 ActionListener. 
//如果我说得这么浅显你都不明白, 那你该........那个什么了.........
//大多数情况下, 我们只是 java 类库的使用者, 我们
//该如何正确而清淅的使用java类库中的事件模型呢?
//继续往下看:

class EventReceipter {
    EventSource es1;
    EventSource es2;
    EventSource es3;    
    
    
    //三个事件监听器实例, 这里用了 java 的内部匿名类, 
    //这三个匿名内部类实现了MyEvent接口的方法
    //这些方法将调用转发到外部类的方法上.
    //java 内部匿名类的语法让事件监听的实现具有很大灵活性. 
    //这与 c# 中的事件模型是类似的,  c# 编译器进行了一些事件转发帮助. 
    //在 microsoft c++ 7.0 扩展中, 事件模型得到了统一, 在语义上是与java一致的.
    MyEvent listener1 = new MyEvent(){
        public boolean onBeforeChange(int newValue) {
            return onMyMember1_BeforeChange(newValue);
        }
        public void onValueChanged(int currValue) {
            onMyMember1_ValueChanged(currValue);
        }
    };
    MyEvent listener2 = new MyEvent() {
        public boolean onBeforeChange(int newValue) {
            return onMyMember2_BeforeChange(newValue);
        }
        public void onValueChanged(int currValue) {
            onMyMember2_ValueChanged(currValue);
        }
    };  
    MyEvent listener3 = new MyEvent() {
        public boolean onBeforeChange(int newValue) {
            return onMyMember3_BeforeChange(newValue);
        }
        public void onValueChanged(int currValue) {
            onMyMember3_ValueChanged(currValue);
        }
    };

    
    public boolean onMyMember1_BeforeChange(int newValue) {
        //.. do something
        return false;
    }
    public void onMyMember1_ValueChanged(int currValue) {
        //.. do something   
    }
    public boolean onMyMember2_BeforeChange(int newValue) {
        //.. do something
        System.out.println("ok, can change it, the value will be " + newValue);
        return true;
    }
    public void onMyMember2_ValueChanged(int currValue) {
        //.. do something   
        System.out.println("changed. the value is " + currValue);
    }
    public boolean onMyMember3_BeforeChange(int newValue) {
        //.. do something
        return false;
    }
    public void onMyMember3_ValueChanged(int currValue) {
        //.. do something   
    }


    //构造函数
    public EventReceipter ()  {
        //创建对象
        es1 = new EventSource();
        es2 = new EventSource();
        es3 = new EventSource();
        
        //添加对象的监听器
        es1.addMyEventListener(listener1);
        es2.addMyEventListener(listener2);
        es3.addMyEventListener(listener3);
    }
}


class EventStudy {
    public static void main(String args[]) {
        //创建实现, 并调用实例成员 es2 的方法 setValue. 
        //这将引发事件. 控制台打印事件结果
        new EventReceipter().es2.setValue(12345);
    }
}

// 总结, 这个演示事实上实现了基本的所谓 framework.
// EventReceipter 是应用程序中的主要类.
// 它的三个成员 es1, es2, es3, 是组成类的重要元素.
// 类 EventReceipter 构造函数中初始化三个成员
// 最后, 对成员的访问生成相应的事件, 并处理事件. 
// 一切都那么和谐.......
// 欢迎各位发表自己的任何看法.....

这种贴俺是非常非常支持的,楼主有心了
支持!!!!
up
不好意思,现在来不及看,现收藏一下
支持
支持一下
非常支持!
太好了,我正在因此而困扰呢~
感谢!
非常好,谢谢。
学习。。。。
支持,谢谢!
顶~~~
CSDN好人多,谢谢
加入mybase,good,thank you!
不错,应该支持和鼓励楼主,希望以后有更多这样的帖子,大家共同进步
楼主加油啊
严重支持~

:)
果然有见地!
厉害厉害!佩服佩服!

祝你好运!
好人!
hao
不错,希望楼主以后有更多这样的好文章涌现
这种好的心得应该多些发表
收藏:)
有劳楼主了:)
看了半天才明白原来楼主在讲解java中的事件处理机制(原理).
值得学习!!!!
不过没有搞懂为什么在java的事件处理机制中内部匿名类是关键呢?希望楼主能给一个解释!

我觉得里面的关键应该还是事件源类中关于成员方法的处理
三人行必有我师
ychotman(hotman) 说得对,关键是事件源中激发事件的方法,请问怎样编写串口事件?
先想收藏,再请
搂主解释一下,弄不明白。谢谢。
我一般编写事件都是:
1:新建一个继承于EventObject的事件类;
2:新建一个事件接口;
3:在写关于我的事件类的Prepro...("属性"那个单词,忘了)或ChangEvent变化的类;
这应该是自定义事件的标准做法吧.?
支持,我顶
收藏:)
有劳楼主了:)
厉害,博学,大度。
支持
先收藏

学习
好东西
请问能不能把自定义事件的标准再讲详细点,谢谢
楼主能把所学花宝贵时间总结并发表出来,精神实在难能可贵,不顶对不起这种精神
多谢指导,小弟希望各位高手要是有什么心得的话来和大家一起分享,谢谢
IBM收购Aspera加速大数据传输 各式各样的极品程序员,你属于哪一种 Google员工离职前必做的14件事情 GitHub上最火的开源项目及编程语言是什么? 2014的12个大数据趋势:Hadoop继续升温,R将进入主流 研究称三星手机可能存在安全漏洞 初创IT公司里开发者最容易犯的九种错误 还有多少开发者在为IE6做兼容性测试? 解读华三“新IT易之道”理念下的云计算和数据中心 回顾苹果2013:硬件几乎无突破 热衷收购 敏捷开发流程管理须参考的3个要素 微软潘正磊谈DevOps、Visual Studio 2013新功能、.NET未来 Jail Breaking之后,iOS 7的指纹识别还hold住么? “勇者前线”开发商Gumi获1900万美元融资 工信部发首批10张虚拟运营商牌照 开发者有哪些新机会 【PPT集萃】十位一线专家分享Spark现状与未来 谁主沉浮,亚马逊和思科角力DaaS市场 忆往昔峥嵘岁月稠——看苹果第一代iPhone的“风骚”往事 开源工具链“大牛”的经验分享:HelloGCC 2013精彩演讲回顾 20个超实用的JavaScript技巧及最佳实践 【开源专访】Linux Deepin:做更好用的Linux桌面系统 访Andy Jassy:感受亚马逊AWS生态观,思考国内外云计算差异 站到风口,最先飞起来的能将服务做到极致的IDC 苹果Siri再获一专利:可使用自然语音输入来搜索和标记图片 研发周报:Google抛弃C语言,采用Go语言重写Go编译器 取其精华 IE11里移除和新增的功能 大胆预测亚马逊即将推出的五大产品或服务 移动周报:GitHub章鱼猫中国之行 三星与LG的新动向:同样的物联网 ,不同的玩法 从Twitter到Tinder,看社交媒体在2013年的沉浮 一周消息树:有道周枫和他的“放养”团队、太极助手惹“非议” CListBox的问题 请问!那位哥哥姐姐可以教我学习呢!? 页眉页角问题 一个关于package的初级问题 窗口大小 win2k+诺顿杀毒软件企业版~~~~~~~~~~~等待,立即送分! 请问我如何将CStatic透明化,即上面显示的字能够映在窗体上,并不是映在灰色CStatic控件上。???????????????? 网页发送短信是如何实现的? 陷入死循环啦!!! 紧急求助!!!!![2000密码] 为什么只能添加一条记录?帮帮忙,谢谢 谁知道比较好的学习汇编语言的网站 如何用JS打开一个文件对话框 有什么办法能让fsck的时候,不需要手动确认? 如何将编写好的*.chm文件连接到编写的应用程序中?(急) 高手请进!SQL SERVER出现问题! 急!!!请教计算机网络中的停止等待协议算法 哪能找到一个图书管理系统示例的源代码,谢谢 一个很简单的备份问题!~~~散分!~~~~~~ 用sql语句查询表,如何自动把Null值转换为0或指定值?? 如何屏蔽win2000下的ctrl+alt+del啊? ADO和字符集问题 请问各位大侠,weblogic里部署jsp和javabean的问题 求问有关Datetime和smallDatetime的问题 在jbuild+mb中,MIDlet和displayabel form 有什么区别,? Resin 2.1.0下面怎么配mm.mysql驱动? 关于web下的参数传递问题,向大家请教。 请教计算机网络中的停止等待协议的算法 有谁用过imagelib吗? 怎么用VB调用access内部定义的函数??? NTLDR is missing 请教三个问题 微软的UPDATE页面里某些效果如何实现? 兄弟们,帮帮忙!遇到点麻烦(在线) 谁能给我介绍些专门讨论算法的网站啊~~~~ 一个关于迭代算法的问题。各位老大请帮忙! 关于bioskey(int cmd)键值得一个疑问 能否用java applet做出一个后台数据库系统?哪有例子? 请教各位大虾删除某条记录的问题(100分啊) SQLSERVER 2000狂慢(只在本机上,或者说是本机的sqlserver程序狂慢),求建议和经验? ORACLE 数据库安装的初始密码是什么?立即送分.....呵.. servlet中直接连接mysql 特急!!!谁有Intel Pro\100 VE Connetion 网卡for SCO的驱动???在线等待 如何在虚拟目录下运成servlet生成的class文件 有没有调用winamp皮肤的例子或者控件? 怎么用PHP实现定时备份呀,帮帮忙吧 一般程序中常用的"撤消","重作"两种功能是怎么实现的?内在机制是什么呢? 如何打印位图? 问一个简单的问题,在redhat9下面,你们怎么样用QQ?gcc3.2? 能帮忙看一下这个10行的TBitmap小程序吗? 有几种方法可以给一个CRichEditView加垂直滚动条? 无油空气炸锅第二代和第一代有什么区别 阿基米德原理在月球上同样适用吗 -波从一种介质进入另一种介质的振幅将如何变化 I dropped him in on my way to the hospital什么意思 I really like them can I try them on 这句子是什么意思还有这里的really ,try sure,you should try them on 冰箱长期通电,外观会发热吗? On his way to school he met ______,so he sent him to hospital.a.very ill man b.much sick man c.serious ill man d.very sick man请问下为什么?能否分别解释下 他说跟我在一起时间过得快什么意思他说没有别的感觉只有一个感觉就是时间不够用,到底是怎样 英文翻译:错题本 在光速下航行的时间问题本人医科大毕业 物理确实学的不好 所以找说下 不需要学霸们乱喷 今天被小侄子问了个神题 实在不知如何回答 假设 有A飞船与B飞船同样性能 同地同时开始加速 A加 股票中"缩水"是什么意思? 金属通电后为什么会发热 在光速下航行的时间流速问题本人医科大毕业 物理确实学的不好 所以先说下 不劳烦学霸们来喷小弟的物理常识有多么多么菜13 今天被小侄子问了个神题 实在不知如何回答 假设 有A飞船与B 缩水什么意思啊 橡胶通电会不会发热我有一个想法:通常说橡胶是绝缘,我在想,要是把橡胶接入电路里面(此电路电流强,或者电流很大很啊),通常会说:因为橡胶是绝缘的,所以此电路是断路,橡胶就像是一 以光速飞行或近似光速飞行时,呆在飞行器上的时间有什么差别?那个时间更短一点?如果以光速飞行那么飞十光年的距离,呆在飞行器上时几分钟?还是更长?这有没有什么换算?顺便问下有超光速 缩水是什么意思? 寻找一个字 和 “儿”字很相近的一个字,好象就比 “儿”字 2个笔画分得远(近)些而已,以前在贴吧见过! 漫画里的发声词有哪些?比如爆炸“砰,轰隆”等着一类的发声词! au revoir是什么意思 双色球胆托具体是什么意思啊?胆具体是什么?托具体又是什么? I'm on my way.说这句话时,是我要走了,还是已经走了,还是我要回来了? 各种颜色的丝带都代表什么?完整 天上乌云盖,天上乌云盖,大雨来得快意思是;只要你看到天上有乌云,那说明马上就要下雨 带有“科”的四字短语,企业用. 各色丝带的含义我想知道各色丝带的国际通用的含义.就像红丝带代表关爱艾滋粉红丝带代表乳腺癌、关爱女性健康一样.不要商业组织广告性的那种.希望大家给的完全一些.这次的大地震为什 乌云翻滚的意思 求词.带有葵字的四字短语最好和春天 清明有关 如题目前知道的有红丝带绿丝带蓝丝带粉丝带黄丝带请知道的人把各种颜色丝带的含义告诉我哈! 为什么“天上乌云盖,大雨来得快”? he confessed to me that he had just been converted to some strange religion 求翻译 各种不同颜色的丝带的含义如黄丝带 绿丝带...还有红丝带 蓝丝带 白丝带 粉丝带 你是不是个大烧饼 第二代无油空气炸锅好用吗 某导体接在12V的电路中,电流为2A,若导体两端电压为6V,导体中电流为 A,若要使通过该导体的电流变为0.5A,则导体两端所加电压应为 V,若该导体两端所加电压为0,则该导体阻值为 欧(我知道答案, He dose not know all of us .so he has our names on a piece of paper and---He dose not know all of us .so he has our names on a piece of paper and __our names before he bebins his lesson.A.gives B.calls C.asks D.tells 据中央气象台2009年11月8日预报:受东移冷空气影响,未来三天东北、华北地区将有5~6级大风,气温将下降8~10℃,伴有降雪.据此完成6~8题.6.“未来三天”影响东北地区的天气系统是 \x05\x05\x05 已知函数fx=xlnx 1求函数的极值点 2设直线l过点0,1于曲线y=fx相切,求直线l 的方程 he has our names on a piece df paper and ___ our names before he begins his lessonA.ask B.call C.asksD.calls 冷锋过境怎么样 西安的biangbiang面的biang字怎么写. he is a new teacher,( )he()know our names.He has all the names ()a small piece of paper.On the ()le 不用油的炸锅 空气炸锅 有人用过吗? 已知函数Fx=xlnx.求函数Fx的极值 he has our names on a piece df paper and calls our names before he begins his为什么用calls ——— 乐扣乐扣无油智能炸锅到底好用吗?有用过的没? 西安的biangbiang面那个biang 怎么写啊我是问写出来是什么样子啊,哪里有可以看见的吗 飞流直下这个词的意思是什么不是诗句,只是词 高一地理冷锋过境的影响, 西安有种面叫,biang biang mian ,请问biang 两个字怎么写? 用飞流直下、一泻千里、波涛汹涌、这几个词语中的两个写一段话 陕西面食 biang biang面请问有哪位高人知道陕西的biang biang面,字比较复杂但据说有口诀,而且还有典故,如果有人知道请详细说明, 质量为m的带电小球用细绳悬挂于匀强电场中,静止时A角为60度,求①小球带何种电性②将线烧断后2s小球速度顿大? 注塑模具上所说的本体是什么意思? 陕西有一中biang.biang 面,这个biang字怎么写?我只知道读音!绝对是biang,而不是棒 高二物理 急求解求解答 有哪个词 表示的意思是 短语也行 急 第二代无油空气炸锅好用吗 牛顿第一定律(2)的答案,好心的人啊,你帮帮忙吧5555555在5月8日晚上之前给我行吗?求你们了! 什么字有“的”的意思?最好是写起来复杂一些的. 小德美网后实现17连胜 让年终第一悬罗马10连胜纪录被终结 国米3比0击傅博希望国脚们别再受伤 战印尼沙特须花圃变向日葵园 新加坡华人被称“向日卫计委:将H7N9纳入法定乙类传染病最高法:伪造证据、暴力抗拒执行是常见“IT男”非法贩卖300多万条“客户解放军学员体验德国军校:74岁军官坚最高法通报首批失信被执行人 3万余老最高法:公布失信名单威慑效果明显 自学校开“学生使用手机”听证会 家长请上海市一小学因作业量太大遭教育部通报大学生零成本创业 半天卖千根糖葫芦收发改委:在未得资金支持时已积极应对气黑莓放弃出售计划 撤换首席执行长海因发改委:雾霾天气几乎常态化 通过5-部分高校将学位证挂钩英语四级 教育部英国内阁会议严禁使用平板电脑 避免遭国家海洋局出台意见推进项目用岛确权发报告显示加拿大远非中国投资者首选库克:苹果不歧视非主流性取向员工及变健康服务业开启8万亿盛宴朝鲜寻求与美国对话?“罗塞塔”10年远征大事记上月空气质量佛山垫底加薪的时机在哪里?首批公租房轮候号摇号产生不必纠结沪指2000点破与不破新股或推动结构性机会法国第一女友搬进总统官邸喝醋有助淡斑油价本周将迎年内“第二跌”奥巴马访日或降规格王立群:吕后和武则天都是女汉子省十二届人大二次会议主席团举行第三次打工大姐收到爱心读者千元捐款急诊科医生患H7N9死亡广州市纪委:领导干部及其子女春节期间下一篇打新基金首单盈利少得可怜药品说明书上的“禁、忌、慎”怎么理解准妈妈春节出行宝典
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘