可视化Java界面模板集成开发工具的设计与实现.docx

上传人:b****7 文档编号:23801986 上传时间:2023-05-20 格式:DOCX 页数:13 大小:22.66KB
下载 相关 举报
可视化Java界面模板集成开发工具的设计与实现.docx_第1页
第1页 / 共13页
可视化Java界面模板集成开发工具的设计与实现.docx_第2页
第2页 / 共13页
可视化Java界面模板集成开发工具的设计与实现.docx_第3页
第3页 / 共13页
可视化Java界面模板集成开发工具的设计与实现.docx_第4页
第4页 / 共13页
可视化Java界面模板集成开发工具的设计与实现.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

可视化Java界面模板集成开发工具的设计与实现.docx

《可视化Java界面模板集成开发工具的设计与实现.docx》由会员分享,可在线阅读,更多相关《可视化Java界面模板集成开发工具的设计与实现.docx(13页珍藏版)》请在冰豆网上搜索。

可视化Java界面模板集成开发工具的设计与实现.docx

可视化Java界面模板集成开发工具的设计与实现

可视化Java界面模板集成开发工具的设计与实现

第10卷第1期

2006年3月

扬州职业大学学报

Journal0fYangzhouPolytechnicCollege

Vr)1,10NO,1

Mar.2006

可视化Java界面模板集成开发工具的设计与实现

张文,潘荫荣,胡幼华

(华东师范大学,上海21)0062)

摘要:

介绍了一种可视化Java界面模板集成开发工具的设计思想与具体实现方法.该工具包含界面

设计嚣,能提供给用户图形的可视化方式来设计界面;集成了自制布局管理器,该布局管理器能灵活控制控件

的大小和位置;此集成开发工具能将界面内吝保存在模板实例中以便修改及重用,并能根据模板实例生成界

面程序源代码.该集成开发工具已用于作者开发的项目,取得了良好的效果.

关键词:

Java;布局管理;界面模板

中图分类号:

TP3l2文献标识码:

A文章编号:

1008—3693(2006)01—0033—04

TheDesignandImplementationofTemplateIntegrated

DevelopmentToolforaVisualJavaInterface

ZHANGWen,PANYin—rong,ttUYou—hua

(EastChinaNormalUniversity,Shanghai200062,China)

Abstract:

I'hedesignandimplementationoftemplateintegrateddevelopmenttoolforavisualJavaintefface

isdealtwithinthispaper.Thistoolcontainstheinterfacedesigncomponentwhichgivesgraphicstyleto

users~obuildinterface.Also.itintegratesanewlayoutmanagerwhichcanflexiblycontrolcomponents'

sizeandlocationanditcouldsavethecontents0finterfacetotheinstancesoftemplatewhichcanhelpedit

ingandreusing,alsobuild.sourcecodesbytemplateinstances.Thistoolhasbeenappliedintheauthor'S

projectandgainedperfecteffectS.

Keywords:

Java;laye)utmanager;interfacetemplate

在应用程序的研发过程中,程序界面的开发

占用了大量时问.Java为程序界面开发提供了布

局管理器,它能自动拧制容器中加入的组件的位

置和尺寸,大大减少了程序员制作界面的工作量.

但Java提供的现有的几种布局管理器功能有限,

它们只能解决一般的界面开发问题,并不能完全

满足界面开发的要求.实际应用中一种常见的要

求就是以行,列方式显示众多信息.符合上述要

求的只有GridBagLayout.但如果缩放使用它的

容器,容器包含的控件不会产生相应缩放行为,从

而破坏了整个界面的协调与一致性.随着Java1.

4.2版本的推出,Java提供了新的布局管理器来

支持现有布局管理器,如SpringLayout,它提出了

相对布局的概念,但它对不同组件设定了相应缩

放规则,用户不能自己设置组件的缩放规则,因此

SpringLayout对控件的缩放控制仍有局限性.

由于Java具有跨平台等众多优点,采用

Swing组件编写应用程序界面越来越流行.但是

收稿日期:

2005lO一28

作者简介:

张~(1981),男,华东师范大学计算机科学技术系硕士研究生;潘荫荣(1946),男,华东师范大学计算机科学技术系

教授,博士生平师;胡幼华(1946一),女,华东师范大学计算机科学技术系教授,博士生导师

扬州职业大学学报第10卷

目前的布局管理器功能有限,因此,本文设计了一

种定制布局管理器MyLayout,它能灵活地控制容

器内组件的位置及缩放行为,有效地支持现有的

布局管理器.为r方便用户使用,作者自行设计

和实现_『一个可视化集成界面开发[具.该工具

包括了MyLayout布局管理器,并包含大多数常

用组件,使用户通过鼠标的拖放即可完成界面的

开发.用户调整好界面后还可利用该工具自动生

成源代码.并将界面内容保存在界面模板实例中,

然后町取界面模板实例重现界而以方便用户修

改.

界面模板技术是国内外一项热门研究领域,

文献对界面模板技术I10j作过详细研究.但

由于Java界面开发的特殊性,现有模板技术不能

方便的用于Java界面开发,而现有开发工具又不

能添加自制布局管理器,因此有必要为Java的界

面制作开发专用工具_3J.在作者开发的一个进

销存物流管理系统中,使用这个工具开发了全部

的用户界面,取得了很好的效果.

1设计目标

作者在对MicrosoftVisualStudio系列和

BorLandJBuiLder等着名集成开发环境进行了研究

和分析,并综合考虑了实际界面开发的需要后,确

定该集成工具要实现以下3个关键技术:

(1)用户界面设计器:

添加控件,设置控件位

置和大小时能在视觉上给用户反馈.在拖动控件

位置时,能绘制出控件拖放的位置.在设置控件

大小而拖动控件边框时,要绘制控件边框以反映

控件的当前大小.

(2)设计自制布局管理器MyLayout类.

(3)界面模板管理器:

用JTree控件显示界面

布局信息.设计界面模板,通过模板实例保存界

面信息,可读取模板实例重现界面内容,能通过对

模板实例的分析自动生成源代码.

2具体设计与实现

2+1用户界面设计器的设计与实现

为了加快软件界面开发的速度和效率,着名

集成开发环境均提供r用户界面设计器,用户在

布局时可直接修改控件的大小,位置,名称等属性

和调整界面整体的协调性,而不必再通过反复的

调试源代码来达到上述目的.提供给用户布局时

的视觉反馈是可视化界面设计功能工作的第一

步.在对现有工具的比较和对实际工作经验分析

后,总结出给用户的视觉反馈必须完成以下要求:

(1)用户添加控件时.必须绘制用户当前用鼠

标拖放的区域以显示控件的当前大小.

(2)添加控件后.鼠标在控件上方移动或按下

时,鼠标应改变形状以提示程序员可以进行的工

作.

(3)在允许改变控件大小情况下,在控件边框

按下鼠标后拖动时,必须模拟绘制控件边框以反

映控件的当前大小

(4)在允许改变控件位置情况下,在控件中心

区域按下鼠标后拖动时,必须模拟绘制控件边框

以反映控件的当前位置.

为完成上述功能,被添加的控件必须实现

MouseListener,MouseMotionListener和Compo—

nentIistener接口l4lBasePanel控件继承自

JPanel,它实现了上述接口的关键方法,因此,以

下的介绍均以BasePaneL为例.在BasePaneL的构

造函数中,初始化Rectangle类型的activeRegion

变量以及rectAnchors数组,它们将在更改控件大

小或控件被设置为BorderLayout时使用.

MouseListener接f_=1的mouseMoved()方法处

理了要求

(2)的工作.具体实现该方法时先得到

事件发生时鼠标的位置,然后判断此时鼠标坐标

是否在activeRegion矩形范围内:

若是则恢复鼠

标形状为默认形状;否则设置bResize标志(表示

鼠标位于控件边框上,故此时可以改变控件大

小),同时判断鼠标在边框上的位置(哪条边或哪

个角上),并给iShape变量赋值来记录这些位置

信息,而且改变鼠标的形状来反映鼠标所在的位

置.

MouseListener接口的mousePressed()方法处

理鼠标左键在控件上按下的事件.具体实现的流

程如下:

if(bResize标志末被没置){//表示准备改变控件位置或添//

加控件

if(SlidePanel,className变黾不为空){//表示准备添加控件

设置bPaint标志,并记录起始位置为鼠标位置}else{//表示

准备政变控件的位置

-f(控件的父容器允许改变控什位置){若父容器为Border

Layout,则设置bBorderIayotit标志

第1期张文等:

可视化Java界面模板集成开发T具的设计与实现35

若父容器为MyLayout,则设置bMyLayout标志,并记录起始

位置为鼠标位置}

}else{改变控件大小

设置bRcsizable标志

文中bPaint,bResizable标志分别表示添加控

件或改变控件大小时需绘制控件边框;bBorder,

bMyLayout标志分别表示父容器为BorderLayout

或MyLayou布局时需要绘制控件被拖放到的位

置.

MouseMotionListener的mouseDragged()方

法处理随后的鼠标拖动事件,它模拟绘制添加的

控件大小,更改控件大小时的边框或更改控件位

置时的边框,实现流程如下:

If(bPaint标志被设置);记录终止位置为鼠标位置,调用re.

paint()方法÷

if(I~Resizable标志被设置)j

由iShape值重新计算起始及终止位置,调用repaint()7y法

if(blk~rder标志被设置){

根据鼠标存父容器中的位置及rectAnchom数组的值凋用父

容器的方法绘制矩形区域,表示控件将被放置的方位}

if(hMyLayout标志被设置){

根据鼠标当前位置计算鼠标偏移,传人父容器,并调用父容

器方法绘制控件的当前拖放位置

本文重新实现了BasePanel的repaint()方法,

该方法根据设置的起始和结束位置绘制矩形框,

实时显示修改的控件信息,完成视觉反馈功能.

MouseListener接口的mouseReleased()方法

检查上述标志位,若标志位被设置,则先将该标志

位复位.对于bPaint标志,应先根据SlidePanel

的className变量生成对应的控件,添加到

BasePanel或其子类中,然后复位标志位;对于

bResizable标志,应更改控件大小;对于blsolate

或bBorder标志,应更改位置及大小.

按照上述方法实现了BasePanel类后,针对不

同的布局管理器,构造相应的子类Panel,它们拥

有对应的布局管理器功能.其他可添加组件实现

方法类似,不再赘述.

2+2自制布局管理器MyLayout类

个友善的用户界面在主界面窗口大小变化

的同时,其包含的子控件也应能适当地调整它们

的位置和大小以反映这种变化.Java自带的多种

布局管理器不能完全满足这个需求,因此,本文设

计定制MyLayout布局管理器来解决这个问题.

在主界面大小变化时,其包含的控件的变化

可分为几种情况:

大小不变而仅仅位置变化,大小

改变而位置不变,两者都改变或两者均不变,这四

种情况能反映窗口缩放时对控件缩放的要求.在

构造MyLayout类时,我们设置LFSF,LFSC,

LCSF,LCSC(L:

Location,F:

Fixed,S:

Size,C:

Change)四个公有静态变量,它们分别代表上述四

种情况,将作为限制条件的一部分随控件加入容

器中.

布局管理器要实现getMaximumSize(),get—

PreferredcSize()和getMaximumSize()三个方法,

它们用于返回显示所有控件需要的空间量,以下

以getMaximumSize()为例.该函数包含int类型

变量weight,height变量,它们被初始化为0.具

体实现该方法时遍历容器包含的所有控件,若当

前控件使用getMaximumSize()后得到的控件右

下角横坐标大于weight,则将此横坐标赋值给

weight,同理对height变量做相同操作.遍历结

束上述两个变量代表的范围表示控件需要的最大

空问量,将其返回给容器.

布局管理器的layoutManager()方法负责设

置容器中子组件的尺寸与位置.为了设置控件的

大小,我们用container.getSize()方法得到容器当

前的宽width和高height,并将它们与容器的初

始宽与高进行比较得到X轴大小变化比例xPer—

cent和Y轴大小变化比例yPercent.然后遍历控

件,在对它们使用setBounds(intx,inty,intwidth,

intheight)方法来设置位置和大小时,首先取得它

们初始的左上角位置,宽和高度,然后根据控件附

带的限制条件进行缩放.比如对于LFSC(位置

固定而大小改变),为了在设置控件大小时改变控

件的宽度,使用(int)(originWidthpercent)代替

width的值,从而使该控件长度变化的幅度和容

器长度的变化幅度相同.

前文提到的GridBagLayout布局管理器在容

器大小固定的情况下运行良好,但一旦容器大小

变动,便会出现空白区域或控件的控件宽度变得

很窄等界面不协调一致的问题.本文设计的My

Layout布局管理器能让用户自己设置控件的缩

放规则,在容器大小变化时MyLayout能根据控

件被设定的缩放规则灵活的改变位置和大小,不

扬州职业大学学报第10卷

会出现上述问题.因此,MyLayout是一种应用前

景广泛的自制布局管理器.

2.3界面模板管理器的设计与实现

采用Java编写的程序界面具有共同的格式,

它使用容器包含界面组件,而且容器也可以再包

含容器,从而容易构建出复杂的程序界面.以上

所述的界面结构类似…颗树,容器是树根或树枝,

而组件是叶子节点.因此,我们采用xm[设计界

面模板.xm[中的每个元素代表一个容器或组

件,而容器或组件的属性则可存储在xml节点属

性中,设汁的xm[的DTD如下:

<!

ElEMEN一1c.ntainer(c0ntainerlcomIxment)*>

<!

ATTIISTcontainerl'laIIICCI)NFA#RFQUIRED

typeCDATA#REQUIRED

anchor(I)ATA#IMHlED>

<!

ELEMENTcomponentEMVI'Y>

<!

ATTLIbH,comtxmentnst]le(~ATA#REQUIRED

typeCDA'FA#REQUIRED

textCDATA世REQUIRED

anchorCDA'"FA#IMILlED>

在用户设计界面时,工具采用JTree类型变

量来动态表示界面的信息,树变量的根节点代表

界面最外层的容器.当用户添加一个控件后,接

收MouseEvent事件的控件是父组件,SlidePanel

中被选中的组件是子组件.因为被添加的组件的

toString()方法被覆盖,所以树节点的显示文本是

实际生成的代码中的变量名称.遍历树,寻找与

父组件同名的树节点,以子组件为构造函数的参

数创建新的树节点,添加到父节点中,从而完成对

树的更新.用户可双树节点来更改组件的属

性.当更改组件名称时,必须遍历整个树,查看是

否有组件与新的组件名称相同,若有则修改失败;

若没有同名组件则组件的名称被成功修改.

用户完成界面设计后,可将界面信息(即树的

内容存)储到模板中,此时应遍历树,对每个树节

点构造对应的xml元素,并通过读取树节点包含

的组件的属性来对xml元素的属性赋值.我们采

用IX)M方法来构造上述的xml文件.在xml构

造完成后,将xml根元素传人文件输出流中,则

xml将自动保存为界面模板实例.凄取模板实例

是上述过程的逆过程,在此不再赘述.

该工具通过对模板实例的分析来生成界面程

序源代码.在使用DOM方法读人xml后,遍历

文档,对每种元素调用对应方法,它们负责将元素

的属性加入源代码中.具体的实现是采用递归的

方法,递归函数接收两个变量一一元素的子节点

和父节点代表的变量名,在第一次调用该函数时

父节点变量名为"this",代表向JPanel中添加控

件.采用上述方法,能快速生成源代码.

3结语

本文设汁和开发的可视化Java界面集成开

发工具能高效开发出应用程序界面的组件.该工

具集成了用户界面设计器,自制MyLayout布局

管理器和界面管理器,能方便地添加新的控件,因

此,该工具具有良好的可扩充性;能以可视化的方

式编辑界面,易于调试;能以树形结构直观地展现

控件分布,以XML方式保存界面信息,并能读取

XML文件重现界面及生成源代码,使程序员从繁

重的界面编制_丁作中解脱出来,专心进行逻辑层

与数据层的工作.该工具已经成功地应用在作者

负责开发的进销存物流管理系统中.作为一种灵

活实用的可视化界面开发工具,它具有广泛的应

用前景,

参考文献:

[1]万建成,孙彬.支持用户界面自动生成的界面模型[J].

计算机工程与应用,2003(18):

114l18.

[2]吴桂阳,万建成.基于XMI的界面模板技术[J].计算

机应用研究,2004(10):

51.

[3JPINHEIRODASIIVAP,GRIFFI~lHST,PATON

N.GeneratingUserInterfaceCodeinaModelBaUs—

erInterfaceDevelopmentEnvironment[Cf.InProceed—

ingsofAdvancedVisuallnterfaces,2000:

155—160.

[4]郭旭,朱洁斌,吴宁文.JbV核心编程[M]北京:

清华

大学出版社,2003.

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1