本发明涉及界面设计技术领域,尤其涉及一种Swing界面自动构成的方法。
背景技术:
传统JAVA程序开发Swing界面,界面上元素的属性、样式、行为等全都定义在代码中,代码无法复用,耦合度高;与业务逻辑代码混合不便于开发和维护;此外,如果想修改界面,就必须要对代码进行修改,再次编译,降低了效率。
现有技术中公开了“一种应用软件更新方法和装置”,见公开号为:CN105335201A,公开日为:2016-02-17的中国专利,方案包括:下载完关于目标功能的更新包后,从更新包中提取该目标功能的目标启动图标,在相应运行界面输出;检测到目标启动图标被启动的操作后,调起预定义组件;基于该更新包,通过JAVA语言的反射特性,生成启动该目标功能所需的运行参数和包括该目标功能启动所需的对象的调用方法的运行环境,在该运行环境中创建该目标功能运行所需的类和工具对象,修改所需类的预定变量,根据该修改后的预定成员变量值,在调起的预定义组件的生命周期中通过该instrument对象和运行参数,调起关于该目标功能运行所需的对象的调用方法,以实现该目标功能的启动。应用该发明实施例可以实现应用软件的自动更新与静默伪安装。该发明虽然也进行了截面的更新,但是采用的技术跟本专利申请并不相同。
技术实现要素:
本发明要解决的技术问题,在于提供一种实现了界面与业务逻辑的分离,提高了程序的可读性和可维护性;提高了编程效率。
本发明是这样实现的:一种Swing界面自动构成的方法,所述方法为:将所有Swing界面元素的属性全都定义在一个XML文件中;需要生产界面时,通过读取XML文件解析数据来获取界面元素的属性;通过JAVA的反射技术来实现运行时生成Swing(Swing是一个用于开发Java应用程序用户界面的开发工具包)界面。
进一步的,对Swing界面修改时,只要修改XML文件。
进一步的,将所有Swing界面元素的属性全都定义在一个XML文件中;其中,元素的属性按照XML格式书写,属性包括名称、坐标、大小、以及父容器等;每一个节点代表一个UI控件,每一个特征attribute对应控件的一个属性,attribute预先在解析器中添加处理而获得扩展支持。
进一步的,所述方法设置有界面元素解析模块和各类Swing类型解析模块,通过界面元素解析模块和各类Swing类型解析模块读取XML文件进行解析数据,获得界面元素的属性,即每一个UI控件在XML用一个节点表示,通过XML读取库,读取XML文件,获取每一个UI控件的节点,再读取相应节点对应的特征attribute,即可得到对应界面元素属性。
进一步的,通过JAVA的反射技术来实现运行时生成Swing界面具体为:一个UI控件对应XML文件中的一个节点,每一个节点中的attribute描述了这个控件的某项属性;每个UI控件必然定义一个class属性表明该对象的类;解析器获取到UI控件的类名,调用对应的类的解析器类,调用其生成控件的方式,以获得对应类型的控件。如XML文件中某一节点标明class为Button,程序从所有的解析器中找到按键工具ButtonAnalyzer,调用它的生成控件方法,便获得了一个按钮对象。遍历XML文件中的节点,就获得了全部的控件对象,实现生成界面。
本发明具有如下优点:一、实现了界面与业务逻辑的分离,提高了程序的可读性和可维护性。(界面元素定义在单独的XML文件中,程序代码只需要专注于业务逻辑)
二、修改界面不需要修改代码并重新编译,只需要修改相应的XML文件,更加地灵活。也提供了非开发人员修改界面的渠道。(利用JAVA提供的反射技术,实现了在程序运行时获取界面元素的类型并动态生成相应对象)。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明方法结构示意图。
具体实施方式
请参阅图1所示,一种Swing界面自动构成的方法,所述方法为:将所有Swing界面元素的属性全都定义在一个XML文件中;需要生产界面时,通过读取XML文件解析数据来获取界面元素的属性;通过JAVA的反射技术来实现运行时生成Swing界面。后续对Swing界面修改时,只要修改XML文件。
所述方法具体为:将所有Swing界面元素的属性全都定义在一个XML文件中;其中,元素的属性按照XML格式书写,属性包括名称、坐标、大小、以及父容器等。XML格式如:<Component id="readIDNo"class="JButton"parentid="openCard"text="读二代证"x="0"y="0"width="20"height="10"/>如上例,表示一个坐标为(0,0),长20,宽10的按钮,按钮文字为“读二代证”,自身id为"readIDNo",父容器为id为"openCard"的控件。同时可以通过预先修改解析器来实现更多属性的支持。
解析模块需要一个通用解析模块(即界面元素解析模块)以及针对各类Swing类型的解析模块,根据XML文件中定义的内容,通过JAVA反射技术生成对应的对象。
所述方法设置有界面元素解析模块和各类Swing类型解析模块,通过界面元素解析模块和各类Swing类型解析模块读取XML文件进行解析数据,获得界面元素的属性,即每一个UI控件在XML用一个节点表示,通过XML读取库,读取XML文件,获取每一个UI控件的节点,再读取相应节点对应的特征attribute,即可得到对应界面元素属性。
通过JAVA的反射技术来实现运行时生成Swing界面具体为:一个UI控件对应XML文件中的一个节点,每一个节点中的attribute描述了这个控件的某项属性;每个UI控件必然定义一个class属性表明该对象的类;解析器获取到UI控件的类名,调用对应的类的解析器类,调用其生成控件的方式,以获得对应类型的控件。
注:反射技术是java语言提供的一种在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性的方法。即通过反射可以使得程序能够在运行时调用任意一个类的任意方法。
XML是一种可扩展标记语言,很类似HTML,其标签没有被预定义。需要自行定义标签。即上述内容中用于描述Ui控件属性的XML文件的内容中,节点名、属性名(即attribute)都可自行定义。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。