首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于IOC的GUI框架设计与实现
来源:本站整理  作者:佚名  2011-09-15 05:25:13



配置文件说明如下:

  (1)根节点为beans。

  (2)bean节点中的id属性用来唯一地标识一个组件,该值要与代码里的组件名一致,class属性用来表示所对应的类名。

  (3)event节点的type属性表示监听器的类型, class属性表示事件触发时将要执行的方法所对应的类名,method属性表示事件触发时将要执行的方法。如上面xml文件中,表示当ok组件发生单击事件时,将执行test. EventOperator类的operate方法。

  (4)ref子节点值表示该组件需要依赖的其他bean的标识。

  (5)bean其他子节点为设置组件外观的方法,子节点值为调用该方法所需的参数值和对应的参数类型。

  4.2 Java的反射机制

  因为所对应的类、方法都保存在xml文件中,而对xml解析得到的类名和方法名都是字符串类型,要把字符串实例化成相应的对象并调用就要用到Java的反射技术[4]。

  Java的反射机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的类的内部信息,包括其访问权限、父类、实现接口,也包括成员变量和方法的所有信息,并可在运行时改变成员变量的内容或执行方法。

  本框架主要利用反射机制来实例化对象和调用方法。其关键代码如下

  (className,methodName均为字符串):

  Class instance = Class.forName(className).newInstance();

  //获得目标类实例,传入目标类名及包名

  Class c = Class.forName(className);

  Method m = c.getMethod(methodName,new Class[]{...});

  //传入方法名和参数类型数组

  m.invoke(instance, new Object[]{});

  //方法执行,传入目标类的实例和方法参数值数组

  4.3 xml文件处理器

  xml文件处理器主要用于对bean-config.xml文件进行解析, 本框架采用jdk1.5自带的 org.w3c.dom包来解析xml文档,为文档对象模型(DOM) 提供接口。

  xml文件处理器根据传入的xml文件生成Document节点,Document可看做是xml在内存中的一个镜像,对Document操作能够直接同步到该xml文件。关键代码如下:

  DocumentBuilderFactory dbf=DocumentBuilderFactory.new

  Instance();

  DocumentBuilder db=dbf.newDocumentBuilder();

  //通过工厂得到一个DocumentBuilder

  Document doc=db.parse("bean-config.xml");

  //DocumentBuilder通过解析xml文件得到一个Document

  4.4 组件工厂类的实现

  根据xml文件的bean节点建立组件对象,首先利用Document的getElementsByTagName方法获得所有bean节点的NodeList对象,遍历NodeList对象获得每个bean节点的Node对象,再利用Node的getAttributes方法获得该节点的所有属性,然后根据获得的id、class属性就可以实例化组件。关键代码如下:

  NodeList nodes = doc.getElementsByTagName("bean");

  //获得所有的bean节点

  ... ...

  Node node = nodes.item(i);//获得其中一个bean节点 NamedNodeMap attributes = node.getAttributes();

  //取出该节点的所有属性值

  ... ...

  Class cl = Class.forName(class属性值);   Object instance = cl.newInstance(); //创建该类的实例

  4.5 组件外观设置类实现

  从组件工厂类中获得组件对象并从xml文件中获得的方法名、参数值和参数类型,利用Java反射技术就可以为组件执行方法设置组件外观。

上一页  [1] [2] [3] [4]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:162,625.00000 毫秒