在改进的GUI编程中,把窗体中组件的创建、组件的外观设置和组件触发事件时执行什么方法,不是以硬编码的方式组合在一起,而是通过配置文件来配置。这样开发人员无须关心组件的创建、组件的样式设置、事件的监听与实现,只需要设置相应的get、set方法来存取组件、属性等,事件处理方法能在任意类中实现,方法名可以自定义,并且在其他类中能够得到窗体对象及其组件的引用。当组件的样式发生改变时,只需改动配置文件即可。
该改进设计通过配置文件,并利用控制反转和Java反射机制得以实现,这就需要有框架和良好的设计。
3 框架运行机理
框架中各组成部分在运行过程中的调用关系如图1所示。
当程序入口启动时,框架解析bean-config.xml文件;组件工厂类根据xml配置文件创建各种组件对象;组件外观设置类查找xml文件为每个组件设置相应的外观;事件监听器类查找xml文件为每个组件添加对应的事件监听器;事件执行类查找xml文件为每个组件设置事件触发时执行的方法;最后还需要一个保存窗体对象的类。
GUI程序开发人员只需要设置相应的get、set方法来存取组件,事件发生时要执行的方法和配置xml文件。组件的建立、外观的设置、事件监听添加、事件处理方法都由框架来完成。一个编码的例子如下:
publIC class JFrameDemo extends JFrame{
private JTextFiELD input ;
private JButton ok ;
//省略的get, set方法
//省略构造方法,该方法用于添加组件到窗体
}
//事件处理类和方法
public class EventOperator{
public void operate(){
//从保存窗体对象的类中获得窗体
//通过窗体的get方法获得组件
//执行所需的操作并修改组件状态
}
}
4 框架的具体实现
4.1 xml配置文件格式
xml是一种标记语言,用于各种配置文件和不同语言间交换信息,它只负责信息的存储,而不负责信息的表达。本框架bean-config.xml文件的设计格式如下: