`
agile_boy
  • 浏览: 558306 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

GINA之Groovy的"Bean-style"事件处理

阅读更多
GINA:Groovy In Action
    有人提出关于Groovy的listeners的疑问,当时我也只是模糊的了解,看过GIA之后,这里给出正解
    JavaBeans除了支持属性(Properties)之外,还支持事件监听,一个事件监听器就是一个带有回调方法的对象,如果一个事件被激发,那么此回调方法就会被调用。JDK有各种各样的事件简体器:从最简单的Button的ActionListener(当Button被点击是将触发actionPerformed(ActionEvent)操作)到复杂的VetoableChangeListener一应俱全,详细可以参考JDK的API。
    Groovy对事件监听器的支持可谓简洁而强大,在Java中实现JButton的操作如下:
final JButton button = new JButton("Push me!");
button.addActionListener(new IActionListener(){//匿名类
public void actionPerformed(ActionEvent event){
System.out.println(button.getText());
}
});
在上述代码中,不仅需要了解监听器、事件类型,还有了解如何注册和回调方法。
    Groovy是怎样简化的呢?请看如下代码
button = new JButton('Push me!')
button.actionPerformed = { event ->
println button.text
}
够简洁吧 Groovy允许你将回调方法名称作为Bean的字段(Field)来对待,用闭包来实现其内部逻辑。
    虽然Groovy以闭包的形式来处理事件监听器,但它还是对Java形式的实现完全兼容(保留),因此JavaBean中的事件处理,不需要任何修改,就可以在Groovy中运行。
    脚注:Groovy是通过Bean内省(bean introspection)的方式来判断一个Field的set方法是否为其事件监听器的一个回调方法。如果一个Field是Bean的回调方法,那么当监听器被触发的时候,ClosureListener(是所需监听器的代理实现)就会自动的被加入到Bean中。
 
0
0
分享到:
评论
2 楼 agile_boy 2008-02-01  
如果是Java标准Bean的情况的话,没有这种情况发生 如果自定义的话,我的理解应该是两个Listener走的应该是同一个Cloure
1 楼 JohnnyJian 2008-01-31  
如果那个javabean里面有两个listener的方法名称都叫actionPerformed,那直接赋值为一个闭包会发生什么事情?

相关推荐

    Gina 开机登陆

    - 意义:确保GINA DLL被正确加载并准备好处理登录事件。 2. **WlxInitialize**: - 功能:初始化GINA DLL。 - 意义:为接下来的所有登录操作做好准备。 3. **WlxDisplayStatusMessage**: - 功能:显示状态...

    修改GINA,自己实现Windows登陆过程

    **GINA(Graphical Identification and Authentication)**是Windows操作系统中的一部分,主要负责用户的身份验证过程。在Windows XP和Server 2003中,GINA是登录界面的核心组件,允许开发者自定义登录屏幕的行为和...

    自动开关机命令

    如果你想以倒计时的方式,也可以设置好自动关机后,如果想取消的话,关机:win~dos自动开关机命令

    gina远程桌面密码记录工具

    用于记录windows远程桌面登录密码,目前免杀

    Windows登录Gina的Dll

    Gina全称为图形识别与认证模块,是Windows操作系统中的一个动态链接库(Dll),主要用于处理用户登录过程中的身份验证。在Windows XP及更早版本中,Gina是定制登录界面和实现自定义身份验证逻辑的核心组件。 Gina....

    Win7下的Gina

    Gina是Windows早期版本中用于处理登录和身份验证的核心组件。它负责提供登录界面、验证用户的凭据,并根据验证结果控制用户会话的启动或拒绝。然而,Gina存在以下几个问题: - **开发难度高**:由于其复杂的API和...

    替换Windows的GINA---日历登录管理器

    日历登录管理器1.0.0 1:取代Windows默认的登录管理器,在登录界面显示的同时显示日历信息,包括阳历和农历,且注明当天的节日信息(用户也可以自行编辑节日信息) ... 3:用户可以很方便的查看本地所有用户的登录基本...

    GINA之windows登录控制替换

    GINA之Windows登录控制替换 在Windows操作系统中,登录控制是由WinLogon和GINA DLL共同实现的。GINA DLL提供了一个交互式的界面为用户登录提供认证请求,而WinLogon则负责调用GINA DLL来实现登录控制。 在NT/2000/...

    P-Gina-Web-Con-Jquery

    【P-Gina-Web-Con-Jquery】是一个网页项目,它利用了JavaScript库JQuery来增强用户体验,同时结合了CSS(层叠样式表)进行页面的布局与美化。在这个项目中,JQuery被用来处理用户的交互事件,实现动态效果,使得网页...

    定制 自定义 GINA ,Customing GINA

    在 Windows 操作系统中,GINA(Graphical Identification and Authentication)是一個可插拔的组件,负责处理用户的认证和身份验证过程。GINA 是一个Third-party 可以取代的组件,以实现自定义的认证机制。通过...

    p-gina-de-negocio-escuela-de-idiomas

    "p-gina-de-negocio-escuela-de-idiomas"这个项目标题暗示了我们正在讨论的是一个专门针对语言学校的商业网页设计。这个项目可能涉及到创建一个功能完备、用户友好的平台,用于展示课程、招生、师资力量以及提供在线...

    gina-map-layers:用于访问GINA地图图块的图层定义和API

    可以在找到示例支持的Web Map API OpenLayers 2.11+ Google Maps JS API v3 传单0.6+ Mapbox 1.6以上下载资料库使用凉亭: bower install https://github.com/gina-alaska/gina-map-layers.git下载zip: ...

    P-gina-Tecno-Entregas-Evelyn-9-

    标题 "P-gina-Tecno-Entregas-Evelyn-9-" 暗示这是一个技术相关的项目交付页面,可能是某个网页设计或前端开发的工作成果。描述中的内容相同,进一步确认了这可能是一个个人或者团队的工作展示页面。标签 "CSS" 明确...

    GINA1.zip_gina_zip

    6. **服务集成**:如果自定义GINA是为了集成特定的认证服务(如LDAP、Radius、ADFS等),则需要熟悉这些服务的工作原理以及如何与之通信。 7. **日志与审计**:自定义GINA可能需要记录详细的登录活动,以便进行安全...

    P-gina-web-de-soporte-de-Arrecife-App-2021

    "P-gina-web-de-soporte-de-Arrecife-App-2021"是一个关于Arrecife App 2021的支持网页项目,它旨在为用户提供帮助、解答疑问和解决应用中的问题。这个项目的重点是使用CSS(层叠样式表)来实现美观且用户友好的界面...

    GINA--在儿科科学应用.ppt

    自GINA成立以来,全球哮喘管理策略已经历了数次重要的更新与改进,这些策略的核心在于不断提高哮喘诊断的精确度,优化治疗方案,以及强化对哮喘症状的监控与管理。GINA为儿科哮喘患者的治疗和管理提供了详细的指导,...

    full gina 完整Sample

    3. 处理系统事件:Gina还需要响应系统事件,如注销、锁定、切换用户等,以确保系统的安全性和稳定性。 4. 集成到系统:将编写的Gina DLL注册到系统,使其在启动时被LSA加载,完成对登录过程的接管。 三、Gina完整...

    Mi-Primera-P-gina-Web-Bienes-Ra-ces-:PrimeraPáginacreada en el curso deprogramaciónweb de 0 a experto

    【Mi-Primera-P-gina-Web-Bienes-Ra-ces】是一个初学者在完成从0到专家的Web编程课程后创建的首个网页项目。这个项目着重于介绍HTML(超文本标记语言)的基础知识,这是构建网页内容的核心语言。HTML允许开发者通过...

Global site tag (gtag.js) - Google Analytics