注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

千鸟

本blog所有日志均系原创 转载请注明出处

 
 
 

日志

 
 

Swing Application Framework 2 .方便的反射框架  

2007-11-07 21:52:35|  分类: J2SE |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

Swing Application Framework   2 方便的反射机制

有人说java在swing中的对反射机制的封装比c# 垃圾多了(见 http://www.javadby.com/yuyanjichu/20071011/1277.html),java粉丝服气吗? 下面介绍java标准框架 Swing Application Framework 中对反射的封装。

先看看超简洁的代码

在我们来编写一个测试程序,代码如下:

titleButton=new JButton();

ApplicationContext app = ApplicationContext.getInstance();

ActionMap actionMap = app.getActionMap();

titleButton.setAction(actionMap.get("setTitle"));

事件体,代码如下:

@Action public void setTitle() {

    System.out.println("This is btnSearch");

    }

怎么样,简单吧!

对比下java一般的反射写法

package cn.softworks.teachersearchsystem.support;import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.lang.reflect.Method;/**

*该类是用来处理所有的Swing按钮点击事件,并根据将处理权<br>

*转交给使用者来处理

*

*@authorChen.yu

*

*/

publicclass EventHandlerimplements ActionListener { //组件所在的窗体对象

 private Object form = null; //受到委托的方法名

 private String methodName = null; /**

 *构造函数

 *

 *@paramform 组件所在的窗体对象

 *@parammethodName 受到委托的方法名

 */

 public EventHandler(Object form,String methodName) {

this.form = form;

this.methodName = methodName;

 } /**

 *事件处理委托方法

 */

 publicvoid actionPerformed(ActionEvent e) {//得到窗体对象的类型

Class formType = this.form.getClass();try {

 //得到指定委托方法的类型 

 Method method = 

formType.getMethod(this.methodName, new Class[] {e.getClass()});

 //调用指定的方法

 method.invoke(this.form, new Object[] {e});}catch(Exception ex) {

 return;

 }

}

现在我们来编写一个测试程序,代码如下:

btnSearch.addActionListener(new EventHandler(this,"btnSearch_Click"));public void btnSearch_Click(ActionEvent e) {

 System.out.println("This is btnSearch");

}

  评论这张
 
阅读(737)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017