计算机专业优秀毕业论文.doc
毕业设计(论文)题 目 报表设计器开发 专 业 网络工程 班 级 网络041 学 生 杨济忠 指导教师 张璟 二零零八 年第 93 页摘 要现在是信息社会,各种信息都需要处理并直观展现,如股票,物价等信息都需要通过数据报表来展现、分析,因此高质量报表软件系统具有重要的实际意义。 本论文课题研究探索了报表系统的开发方法与技术,综合应用Eclipse、 JAVA 、JDBC、SWT/Jface、 RCP、XML、 CSS、DOM4J,IText,POI等先进技术,开发了基于WEB环境运行的报表设计器,实现了报表设计、模板生成、报表编辑,报表发布等基本功能,为进一步开发实用的报表系统奠定了基础。 关键词:报表,SWT/Jface,Eclipse,XML,B/S,RCPAbstractNow is the information society, all kinds of information need to be addressed and visual display, such as stock ,prices and other information needed to demonstrate through data reports, analysis, the statements of high-quality software system has important practical significance.This paper statements subject to study and explore the system development methods and technology, comprehensive application of Eclipse, JAVA, JDBC, SWT / Jface, RCP, XML, CSS, DOM4J, IText, POI, and other advanced technology, the development of the operating environment based on the statements WEB design , Achieved a report design, template generation, editing statements, issued statements of such basic functions, for the further development of practical system laid the foundation for statements.KEY WORDS: Report,SWT/JFace、Eclipse、XML、B/S、RCP 目 录第一章 概述11.1 课题背景与意义11.2 报表系统发展概况2第二章 开发技术及环境42.1软件环境42.2 主要开发技术4第三章 系统设计63.1系统体系结构63.2 软件模块结构73.3数据源与系统文件结构83.3.1 系统数据源83.3.2 系统文件结构93.3.3 报表显示部分文件13第四章 系统实现144.1主要实现算法144.1.1新建报表流程图144.1.2 新建数据源流程图154.1.3编辑单元格流程图164.1.4 保存报表流程图174.1.5 生成电子表格流程图184.1.6 发布报表流程图204.1.7 编辑CSS流程图214.1.8 生成模板流程图224.1.9 配置服务器流程图234.2 系统编码实现234.2.1 系统的主界面实现234.2.2 新建数据源324.2.3 新建报表344.2.4 编辑单元格354.2.5 生成电子表格364.2.6 发布报表404.2.7 编辑CSS424.2.8 生成模板444.2.9 报表保存454.2.10 配置服务器48第五章 系统典型界面515.1系统主界面515.1.1 编辑视图界面525.1.2 属性视图界面525.1.3 服务器视图界面535.1.4 数据源视图界面535.2部分功能界面545.2.1 新建报表界面545.2.2 新建数据源界面555.2.3 设置CSS界面565.2.4 设置服务器参数界面575.2.5 设置报表参数界面585.2.6生成模板界面58第六章 课题总结60致谢62参考文献63附录65第一章 概述1.1 课题背景与意义现在是信息社会,各种信息都需要处理并直观展现,如股票,物价等信息都需要通过数据报表来展现、分析,因此对高质量报表软件系统的需求非常强烈。报表设计工具是报表系统的重要组成部分,使用报表设计工具,可对企业以及其他用户需要的各种报表进行设计,并在报表引擎上运行。报表设计工具的功能包括数据源关联与访问、报表绘制、布局绘制、属性编辑、脚本编辑、图表编辑、表达式编辑、报表数据映射、报表预览调试等。可通过XML转换技术将报表转换换为PDF、Excel等格式输出。随着B/S应用逐步取代C/S,市场上对Web环境下运行报表的要求日益强烈,C/S时期的报表工具纷纷进行了若干改进与加强,支持B/S结构。这些工具大都是对开源软件进行包装改造,基本上有两种流派:一类来自于FastReport这种基于Delphi的软件,通过控件方式实现Web报表,进而将报表计算移至服务器上进行,再改进为支持Linux;另一类来自于Jasper的基于Java的开源软件。这些工具的整体思路还是沿袭了C/S时的方式,仍然是传统的分组报表的模式,仍然无法解决表样与大作量的代码编写问题,而且使用复杂,不能很好的发挥其效率,不能利用已有的软件功能,同时他们都是利用SWING/AWT来开发的,界面难看。 因此,开发一个具有B/S结构、能适应中国国情、开源的、使用方便、界面美观的报表设计器是一个很多用户直期待的。但是,目前流行的报表软件产品中,比较适合中国情况的产品还是不多。因此,进行本课题研究,开发报表设计器软件,对于开发适合中国特点的实用报表系统,促进企业与社会信息化,具有很好的实际意义。1.2 报表系统发展概况信息化的初期阶段,计算机作为一种新的生产工具,其主要功能是文字输出,如文件打印、表格输出等,相比较手工方式而言,工作效率大大提高。这个时期,用于报表生成的软件主要是WPS表格、CCED、Excel等文字处理工具,这些工具仅仅是将手工绘制报表的方式改为电子处理方式,未涉及到报表数据的集中、共享等处理。更确切地说,这个时期还没有真正意义上的报表工具。 随着信息化程度的不断提高,C/S应用方式逐渐成熟,出现了很多报表工具软件,最著名的当属水晶报表与PB的DataWindow。水晶报表在上世纪一直被微软OEM,成为VB的内置报表工具,在微软的强大支持下,VB庞大的用户群为水晶报表培养了众多应用人员并积累了大量成功案例,从而产生了世界第一(用户量)的报表工具。DataWindow 是 PB 中获取专利技术的控件,它对数据的处理方法相当简洁,能处理各种显示格式,快速的报表制作能力深受PB开发者的喜爱。 这些软件的基本特征是单数据源、条带式(BAND)分组统计模型,通过控件拖拽方式绘制报表,在不编码的情况下能完成简单地行式(分组)报表与单片交叉报表,数据集中在数据库中,可以共享。 但这一时期的用户需求已经与前一阶段的需求大为不同。用户希望放在数据库中的数据能以自己熟悉的方式展现(复杂的表样、统计运算等),而这些报表软件的数据模型源于国外的报表习惯,解决复杂表样的方法并不好,复杂的统计运算也要求开发人员编写大量的程序代码,导致报表开发时间太长,后期的维护工作量也很大。随着B/S应用逐步取代C/S,市场上对Web报表的要求越来越强烈,C/S时期的报表工具纷纷进行了若干改进与加强,普遍支持B/S结构,新的报表软件也如雨后春笋一样不断出现。 在报表工具的发展过程中,还有一类特殊的表格式产品,最著名有ormula1与华表。这种类Excel 的工具,展现能力非常强,但是因为没有数据模型,导致其数据处理能力几乎为零,程序员需要按格编写代码往里填数。相比较分组式报表工具,类Excel工具能彻底解决复杂报表的样式问题,所以在实际应用中它一直是与分组报表互补的一类产品。SWT/JFACE是Eclipse推出优秀的JAVA图形API。RCP,也就是富客户端,是在Eclipse3.0之后分离出来的一个平台。RCP技术其实就是插件开发,可以在一个很小的模板上加入各种插件,扩展性能。现在RCP已经成为Eclipse开源项目的一个亮点,在国际上广泛的使用大量PCR来开发桌面应用程序。在RCP平台上,可以使用Eclipse的插件机制来快速开发独立应用的桌面应用,从而轻松拥有Eclipse的界面结构与界面元素,节省了很多开发精力。运用SWT/Jface与RCP技术来开发报表,是当前报表开发的主流方向。一方面,SWT/Jface可以提供优秀的图形界面,克服JAVA桌面应用界面难看的缺陷;另一方面RCP技术可以提高开发效率。联合运用SWT/Jface与RCP技术,可以开发出优秀的报表产品。第二章 开发技术及环境2.1软件环境本系统的开发环境:操作系统: Window server 2003标准版应用服务器: Tomcat5.5开发平台:eclipse3.3 ;jdk1.52.2 主要开发技术SWT/JfaceSWT(Standard Widget Toolkit )是标准控件工具集。Jface意为JAVA face。由于SUN的AWT/SWING技术在与本地界面融合方面存在缺陷,因此IBM开发了SWT,使得界面风格与本地保持一致。而Jface是SWTa的扩展包,采用MVC的设计模式,使用更加方面。RCPRCP(Rich Client Platform)意为富客户平台。在RCP平台上,可使用Eclipse的插件机制来快速开发独立应用的桌面应用,从而轻松拥有Eclipse的界面结构与界面元素,节省了很多开发精力。Dom4j Dom4j (Document Object Model for JAVA)是一个易用的、开源的库,用于XML,XPath与XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX与JAXP。Dom4j使用起来非常简单,效率高。只要了解基本的XML-DOM模型就能使用。POI POI(Point of Interest)意为为兴趣点,是JAVA与MS Office交互时用到的第三方JAR,也是开源的,属于Apache的一个项目,用法简单。它主要用来读写OLE 2复合文档结构,本系统主要用它来操作EXCEL。IText iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。用法很简单,效率很高。Lomboz lomboz是用来开发j2ee应用、免费eclipse插件,用它可以大大加快web开发、部署等工作。第三章 系统设计3.1系统体系结构本系统采用三层B/S架构 ,分别为表示层、设计层与数据层,如图3-1所示。(1) 表示层(Presentation-Tier) 是报表显示层。本报表系统的表示层有三种类型:Web类型,Excel类型,Pdf类型。(2)设计层(Designer-Tier) 是本报表系统的重中之重。设计层设计的好坏直接影响到报表的使用。其主要任务是建立报表、修改报表、发布报表、生成模板等。这涉及到报表的数据来源,报表的格式,报表输出,是连接表示层与数据层的桥梁。(3)数据层(Data-Tier)主要是与用户有关。本报表系统可以与几种常用的数据库系统交互。报表中可以输入的数据很多,如图表、序列号、常量等。数据层可以存储并管理这些数据。 图3-1系统体系结构图3.2 软件模块结构本系统的软件模块结构,如图3-2所示。 图3-2 系统软件模块结构图图3-2中各模块的基本功能如下: 新建报表:设置报表的名字、每页显示数目、选用报表模板;把这些数据存到Preferences中,供保存报表使用。 新建数据源:设置数据源名称,用它来标识数据连接;选择数据库类型,并设置各种连接参数;进行数据源说明;进行连接测试;连接成功后把数据源名称与各种连接参数保存到dataSource.xml文件中,供以后使用;而数据源说明就生成一个文本文件保存。 编辑单元格:设置单元格的数据,如数据源列、函数、系列号、图像;设置颜色,字体;设置所对应的行列是否扩展,所对应的行列是否排序。这些都要用一定的格式保存起来,供报表显示时使用。 保存报表:设置单元格属性后,保存设置内容。先从Preferences读取报表相关数据,然后生成报表的xml;遍历表格,把表格各种信息填到xml中。编辑报表:保存表格后,如觉得不满意,可以打开报表修改。读取xml,把相关信息填到相应的单元格。也可以设置报表的每页的行数、报表发布者、发布时间、报表说明。生成电子表格:电子表格可用来直接发布,也可用来编辑。先读取报表xml文件,得到各个单元格的数据源,根据数据源不同,得到不同的数据,并填到相应的电子表格内。可以设置电子表格的属性。发布报表:先设置发布目录,然后把项目文件夹下Files目录下的名与Preferences中保存相同的,后缀名为xml、xls、css、pdf的文件都复制到发布目录下。如发布目录已有相同文件,就覆盖。编辑CSS:CSS决定网页页面显示格式,对报表非常重要。本系统提供一个模板,旁边还有介绍各种标记的代表的内容的提示,这样用户就可以自己修改它。修改完后点“确定”,生成报表名+“.css”的样式文件。生成模板:CSS不是很难,但要做一个好看的格式却很难,所心有必要把前面生成的CSS文件保存起来,提供下次使用。首先设置模板名字,然后设置说明,点“确定”后,系统会把当前报表的CSS文件复制到模板xml文件,并生成说明的txt文件。配置服务器:配置发布目录、端口、最大线程数,以方便使用。3.3数据源与系统文件结构3.3.1 系统数据源报表就是数据的显示,所以数据源很重要。本系统的数据源方案如下:(1) 提供建立数据源及管理数据源的功能。针对不同类型的数据库数据,建立相应的数据源。建立了数据源后,就用一个XML文件保存数据源信息,以后可直接从XML文件读取或修改连接信息。(2) 提供对其它类型数据源的支持。主要支持EXCEL文件、函数、系列号、公式等数据源。EXCEL文件可以直接解析为WEB格式,而函数,系列号,公式,图像等可以直接插入。 3.3.2 系统文件结构本系统作为一个桌面应用系统,涉及到许多文件系统,不管用户还是开发者,都有可能容易迷失在文件堆中,所以必须科学管理。为了解决此问题,本系统设计了系统主目录文件结构,以下是系统主目录的的文件截图: 图3-4 系统主目录文件结构图 图3-4中各文件的功能如下:.metadata文件夹:系统自动生成,保存有日志文件。.setting文件夹: 系统自动生成,用于保存项目的各个参数。Bin文件夹:存放已经编译过的JAVA的.class文件。DataSource文件夹:存放数据源的dataSource.xml文件,其中还有各种.txt文件,用来说明各个数据源。该文件夹结构如图3-5所示: 图3-5 DataSource文件夹示意图Files文件夹:用来存放所生成的报表。其中有存放报表信息的xml文件,也有生成为电子表格的.xls文件、pdf文件。当然也存放了报表说明的.txt文件,其结构如图3-6所示: 图3-6 Files文件夹示意图 图3-6 Files文件夹结构示意图icons文件夹:用来存放图象,如按钮图标。intro文件夹:系统自动生成。lib文件夹:用来存放第三方JAR包。META-INF文件夹:系统自动生成,里面有MENIFEST.MF,在这个文件里有描述插件各种信息基本信息。src文件夹:是源文件,其结构如下图所示:图3-7 src文件夹示意图从图中可知,src文件夹包括两个包,一个是xautreportdesign包,里面有Activator.java文件,这是RCP的激活类。另一个是com包。其实这个包里有三个子包:com. Xautreportdesign.action,主要用来存放菜单,工具栏动作类的;com. Xautreportdesign.util,主要用来存放一些工具类的,这些工具类对全局都有用;com.Xautreportdesign.win,主要是界面方面的类,有一些是自动生成后我修改的。com. Xautreportdesign.action包中的一部分类如图3-8所示: 图3-8 com. Xautreportdesign.action包中文件示意图com. Xautreportdesign.util包中的类如图3-9所示: 图3-9 com. Xautreportdesign.util包中文件示意图com. Xautreportdesign.win包中类类如图3-10所示: 图3-10 com. Xautreportdesign.win包中文件示意图Template文件夹:是保存模板的文件夹,里面有模板文件.css文件,也有模板说明.txt文件,如图3-11所示: 图3-11 Template文件夹示意图.classpath、.project、build.properties、javaCompiler.args、plugin.xml、plugin_customization.ini都是系统自动生成的。build.xml:是用ant生成的,为系统打包用。Report.product:是要生成的新产品配置文件。splash.bmp:系统启动时产闪动画面使用。3.3.3 报表显示部分文件对于报表WEB显示部分,有如下重要文件或文件夹:dataSource文件夹:存放数据源文件dataSourece.xml。photo文件夹:存放需要的图片文件。.css文件:是报表的css文件。report.jsp:是解析保存报表信息的.xml的文件。exceltoweb.jsp:是解析EXCEL并生成WEB的文件。第四章 系统实现4.1主要实现算法4.1.1新建报表流程图 图4-1 新建报表算法流程图 该算法首先判断是否已有同名的报表,然后判断行数是否为数字,最后存入Preferences中。4.1.2 新建数据源流程图 图4-2 新建数据源算法流程图 该算法先选择合适自己的数据库,然后输入信息,最后连接,看是否成功,若成功就把信息保存起来。4.1.3编辑单元格流程图图4-3 新建报表算法流程图 该算法首先要得到当前鼠标的位置,然后转化为表格的行列,最后选择数据源,并设置单元格属性。4.1.4 保存报表流程图 图4-4 保存报表算法流程图该算法首先从Preferences中读取报表相关信息,生成报表名的xml文件。然后遍历表格,读取各非空单元格的值及属性,填入写入小xml文件中,最后看是否用到模板,如用到,就生成报表名的css文件。生成xml的代码如下所示:<XautReportFile Name="zainan" tempname="Template" rownum="8" ownerName="杨济忠" time="2008年6月3日" intro="true"> <Columns> <Column DataSource="D:zainanDS.ID" Span="纵扩展" Arrange="不排序" Color="RGB 255, 255, 255" Font="Tahoma.8.0">A1</Column> 在XautReportFile中, “Name”代表报表的名字,“tempname”代表报表用到的模板,“rownum”代表WEB页每页显示的行数,“ownerName”代表作者,time代表发布时间,intro代表是否有说明内容。而Columm代表一个单元格,“DataSource”代表数据源,里面不同的部分又代表不同的意思:如前面为“D:”,那代表数据库,中间代表前面建的数据源的名称,最后代码数据源的列。如前面是“I:”,那代表常量,后面部分就是常量的值。、如前面是“S:”,那代表系列号,后面代表系列号的一部分。如前面是“F:”,那代表的是函数,后面是函数。“Span”,代表扩展情况。扩展就是其它单元格的值是否依赖这个单元格的值;“Arrange”代表是否排序;“Color”代表是颜色,;“Font”代表字体。而这个单元格的ID是A1。4.1.5 生成电子表格流程图 图4-5 生成电子表格算法流程图 该算法首先从Preferences中得到当前报表名,然后读取报表XML文件,得到数据源名称。读取数据源XML,遍历得到数据源的各种参数。用这些参数连接数据库。用POI创建EXCEL文件。把数据库中数据写入EXCEL文件。4.1.6 发布报表流程图 图4-6 发布报表算法流程图该算法首先从Preferences中查看发布目录,如有,就复制报表XML到发布目录,如没有,就设置。然后就开始判断是否有相关文件,如有,就一同复制,因为不复制,就没有用。4.1.7 编辑CSS流程图 图4-7 编辑CSS算法流程图该算法首先从CSS模板中读出模板内容,并显示出来,提供用户修改。修改完成后点确定,从Preferences得当前报表,然后生成报表的CSS文件,如已有相同的就覆盖。最后把修改后的CSS写入报表文件。4.1.8 生成模板流程图 图4-8 生成模板算法流程图 该算法首先设置要生成模板的模板名及说明。然后生成模板文件,当然是CSS类型。如模板说明不为空,也生成文件文件类型的说明书。然后从Preferences中得到当前报表,由此得到当前报表的CSS文件,最后把这CSS文件的内容写入模板文件里。4.1.9 配置服务器流程图 图4-9 配置服务器算法流程图 该算法首先读取服务器配置文件并显示各个参数,这可以修改。点确定后,就把修改后值写入配置文件,并更新相关视图。4.2 系统编码实现4.2.1 系统的主界面实现本系统采用Eclipse RCP技术,也就是开发可以独立运行的Eclipse的插件。运用RCP技术,可以实现与Eclipse一样友好的界面,可以方便地组装成一个很强大的系统,因为这是采用插件机制。本系统的主界面如图4-1所示: 图4-1 报表设计系统主界面图由图4-1可以看到,本系统与Eclipse界面有很大的相似性。本系统主要用到了包com.xautreportdesign.win。其中各个类的功能及重要代码说明如下:Application类:是RCP程序的入口类,RCP程序启动后第一个执行就是它,它负责程序的载入与退出。这个类是建立项目后自动生成的,平常情况不需要修改。ApplicationWorkbenchAdvisor类:是配置工作台的类,工作台的初始化就在这完成。这个类是建立项目后自动生成的,可以修改成自己需要的。这个类的部分代码如下:ApplicationWorkbenchWindowAdvisor类:用来设置窗口。一个工作台可以有多个窗口,所以可以多个该类的对象。这个类是建立项目后自动生成的,可以修改成自己需要的。下面代码说明了窗口大小为(700, 550),有工具栏,窗口标题,显示状态栏,生成系统托盘等。以下是该类的部分实现代码:public void preWindowOpen() /* 设置窗口初始化的各种属性 */IWorkbenchWindowConfigurer configurer = getWindowConfigurer();configurer.setInitialSize(new Point(700, 550);configurer.setShowCoolBar(true);configurer.setShowStatusLine(false);configurer.setTitle("报表生成系统");configurer.setShowPerspectiveBar(true);configurer.setShowStatusLine(true);final IWorkbenchWindow window = getWindowConfigurer().getWindow();/* 创建系统托盘 */trayItem = initTrayItem(window);/* 如果支持系统托盘,则创建托盘的菜单 */if (trayItem != null) createPopupMenu(window);Perspective类:是透视图类。透视图是各个视图,编辑面组成的一个专用的程序界面。本类是项目默认生成,当然也可以写自己的视图,只要实现IperspectiveFactory接口。下面就是本透视图的布局部分代码,效果如图4-1所示。public void createInitialLayout (IPageLayout layout) String editorArea = layout.getEditorArea();layout.setEditorAreaVisible(true);layout.setFixed(false);/ layout.addView(View.ID,IPageLayout.LEFT, 0.25f, editorArea);IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT,0.25f, editorArea);left.addPlaceholder(DatasourceView.ID);left.addPlaceholder(ServerView.ID);layout.getViewLayout(ServerView.ID).setCloseable(false);layout.getViewLayout(ServerView.ID).setMoveable(false);layout.addPlaceholder(editAreaView.ID, IPageLayout, 0.50f,editorArea);layout.addPlaceholder(AttributeView.ID, IPageLayout.BOTTOM, 0.25f,editorArea);layout.getViewLayout(AttributeView.ID).setCloseable(false);layout.getViewLayout(AttributeView.ID).setMoveable(false);ApplicationActionBarAdvisor类:负责创建与配置工作台窗口上主菜单,工具栏,状态栏等,是报表各种功能模块相关入口。下面的代码是用来建立系统托盘项。其中new Separator()是画一条分隔线,在菜单工具栏中也用到。public void fillTrayItem(MenuManager trayMenu) trayMenu.add(deployAction);trayMenu.add(new Separator();trayMenu.add(exampleAction);trayMenu.add(aboutAction);editAreaView类:是编辑视图类。视图相当于一个小窗口,显示某一方面的内容,可以在一个页面上放置几个视图。视图可通过两种方式创建:一通过扩展点:修改plugin.xml文件,设置视图扩展点,在最后一行的</plugin>前加入,下面的代码说明了扩展点是org.eclipse.ui.views,视图名字是“编辑区”,对应的JAVA文件是com.xautreportdesign.win.editAreaView,ID是视图的标识,为XautReportDesign.EditAreaView。对于其它视图,都可以这样创建:<extension point="org.eclipse.ui.views"> <view name="编辑区" class="com.xautreportdesign.win.editAreaView" id="XautReportDesign.EditAreaView"> </view> </extension> 二通过继承抽象类ViewPart类,要改写类中createPartControl,setFocus方法。本视图实现部分的代码如下所示:public void createPartControl(Composite parent) createToolbar();if (!isedit) setPartName("编辑" + reportName); elsesetPartName("(未保存)编辑" + reportName);createTable(parent, colnum, rownum);上面的代码是实现视图内容,其中最重要的是createTable()方法。这个方法是在视图中创建类似EXCEL中的表格。下面的代码创建一个表格,并设置表格的样式,部分代码如下:Composite c1 = new Composite(parent, SWT.NONE);c1.setLayout(new FillLayout();table = new Table(c1, SWT.SINGLE | SWT.HIDE_SELECTION| SWT.FULL_SELECTION);table.setHeaderVisible(true);table.setLinesVisible(true);table.setRedraw(true); 对于表格的列号,下面的代码创建列名从A开始的20个列,其中得把数字转化为字符型 ,其实现代码如下: for (int i = 0; i < 20; i+) TableColumn column = new TableColumn(table, SWT.CENTER);column.setText(" " + String.valueOf(char) (65 + i) + " ");column.pack();而对于行号,下面的方法把按钮附加到每一行的第一列,在按钮上写数字。这样做的原因是使表格可编辑。实现方法如下:Button b = new Button30;for (int i = 0; i < 30; i+) final TableItem item = new TableItem(table, SWT.NONE);item.setText(i + 1, " ");editori = new TableEditor(table);bi = new Button(table, SWT.PUSH);bi.setText(" " + (i + 1) + " ");editori.grabHorizontal = true;editori.minimumHeight = bi.getSize().y;editori.minimumWidth = bi.getSize().x;editori.setEditor(bi, item, 0); 编辑是在属性视图完成的,所以需完成数据绑定。下面代码的作用是数据绑定,它获取鼠标所在单元格:table.addMouseListener(new MouseAdapter() public void mouseDown(MouseEvent event) Control old = editor1.getEditor();if (old != null)old.dispose();Point pt = new Point(event.x, event.y);final TableItem item = table.getItem(pt);if (item != null) int column = -1;for (int i = 0; i <= 20; i+) Rectangle rect = item.getBounds(i);if (rect.contains(pt) column = i;break; 要把表格内容填到属性视图中相应的组件上,实现的方法是首先得到属性视图,其中通过getter()方法得到视图组件,这样就可以修改组件的值,同时得到表格单元格的值,用字符串分析技术得到不同的值,并填充到属性视图table中。实现代码如下:final int col = column;