在基于 Java 开发的电信级系统中,会有大量的 GUI 界面设计工作,但众所周知 Java 的目前的 IDE 解决方案对 Swing 界面开发支持的友好性不尽如人意,要做出友好的界面还是要耗费大量的时间,对有些模块可能比业务逻辑的工作量还要大。所以,现在对于 GUI 界面比较多的系统中,很多公司都会用到界面引擎和 XML 方式来自动生成界面,优点在于:
1、使用 XML 文档描述界面,通过界面生成引擎来解释 XML 文档并最终产生显示的界面。这使得开发界面更加容易,界面风格更加一致,维护更加方便。
2、实现了功能代码和界面代码的分离,使它们之间的耦合性减小,这也降低了故障发生的概率,提高了软件的重用率,减少了代码 Java 代码数量。
其基本实现原理见下图 1:
图 1.XML 文件自动生成界面的原理
具体的界面引擎代码看 GUIEngine.java 文件。
我们给一个简单的界面描述文件的范例见如下清单 1:
清单 1. XML 界面描述文件实例
<?xml version="1.0" encoding="GB2312"?> <gui_desc> <init> <window_w
idth>260</window_width> <window_height>230</window_height> </init> <component type="javax.swing.JLabel"> <height>45</height> <label>UPS Type</label> <">name>labeltest</name> <positionY>12</positionY> <width>230</width> <positionX>12</positionX> </component> <component type="javax.swing.JTextField"> <height>45</height> <default_value>0</default_value> <name>txttest</name> <positionY>67</positionY> <width>230</width> <positionX>12</positionX> </component> <component type="javax.swing.JButton"> <name>btnOK</name> <width>91</width> <action>OutdoorUPS_OkAction</action> <disable /> <positionY>132</positionY> <positionX>12</positionX> <icon>ok.gif</icon> <label> 确定 </label> <height>23</height> </component> <component type="javax.swing.JButton"> <name>btnCancel</name> <width>91</width> <action>CancelAction</action> <disable /> <positionY>132</positionY> <positionX>112</positionX> <icon>cancel.gif</icon> <label> 取消 </label> <height>23</height> </component> </gui_desc>
通过程序创建显示出来的 Swing 界面如下图 2:
图 2 .XML 描述文件生成的界面
程序调用逻辑如下:
请单 2. 根据描述文件创建界面程序清单
/* 创建一个主程序框架 */ JFrame jf=new JFrame("test"); /* 传递界面描述文件,初始化界面引擎实例 */ GUIEngine ge=new GUIEngine("Outdoor_UPS.xml"); ge.createJDialog(jf, "hello world!!").setVisible(false);