




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、摘 要現在是信息社會,各種信息都需要處理并直觀展現,如股票,物價等信息都需要通過數據報表來展現、分析,因此高質量報表軟件系統具有重要的實際意義。 本論文課題研究探索了報表系統的開發方法與技術,綜合應用eclipse、 java 、jdbc、swt/jface、 rcp、xml、 css、dom4j,itext,poi等先進技術,開發了基于web環境運行的報表設計器,實現了報表設計、模板生成、報表編輯,報表發布等基本功能,為進一步開發實用的報表系統奠定了基礎。 關鍵詞:報表,swt/jface,eclipse,xml,b/s,rcpabstractnow is the information s
2、ociety, 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 e
3、xplore 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 g
4、eneration, 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 軟件模塊結構
5、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、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 課題背景與意義現在是信息社會,各種信息都需要處理并直
7、觀展現,如股票,物價等信息都需要通過數據報表來展現、分析,因此對高質量報表軟件系統的需求非常強烈。報表設計工具是報表系統的重要組成部分,使用報表設計工具,可對企業以及其他用戶需要的各種報表進行設計,并在報表引擎上運行。報表設計工具的功能包括數據源關聯與訪問、報表繪制、布局繪制、屬性編輯、腳本編輯、圖表編輯、表達式編輯、報表數據映射、報表預覽調試等。可通過xml轉換技術將報表轉換換為pdf、excel等格式輸出。隨著b/s應用逐步取代c/s,市場上對web環境下運行報表的要求日益強烈,c/s時期的報表工具紛紛進行了若干改進與加強,支持b/s結構。這些工具大都是對開源軟件進行包裝改造,基本上有兩種
8、流派:一類來自于fastreport這種基于delphi的軟件,通過控件方式實現web報表,進而將報表計算移至服務器上進行,再改進為支持linux;另一類來自于jasper的基于java的開源軟件。這些工具的整體思路還是沿襲了c/s時的方式,仍然是傳統的分組報表的模式,仍然無法解決表樣和大作量的代碼編寫問題,而且使用復雜,不能很好的發揮其效率,不能利用已有的軟件功能,同時他們都是利用swing/awt來開發的,界面難看。因此,開發一個具有b/s結構、能適應中國國情、開源的、使用方便、界面美觀的報表設計器是一個很多用戶直期待的。但是,目前流行的報表軟件產品中,比較適合中國情況的產品還是不多。因此
9、,進行本課題研究,開發報表設計器軟件,對于開發適合中國特點的實用報表系統,促進企業與社會信息化,具有很好的實際意義。1.2 報表系統發展概況信息化的初期階段,計算機作為一種新的生產工具,其主要功能是文字輸出,如文件打印、表格輸出等,相比較手工方式而言,工作效率大大提高。這個時期,用于報表生成的軟件主要是wps表格、cced、excel等文字處理工具,這些工具僅僅是將手工繪制報表的方式改為電子處理方式,未涉及到報表數據的集中、共享等處理。更確切地說,這個時期還沒有真正意義上的報表工具。 隨著信息化程度的不斷提高,c/s應用方式逐漸成熟,出現了很多報表工具軟件,最著名的當屬水晶報表和pb的data
10、window。水晶報表在上世紀一直被微軟oem,成為vb的內置報表工具,在微軟的強大支持下,vb龐大的用戶群為水晶報表培養了眾多應用人員并積累了大量成功案例,從而產生了世界第一(用戶量)的報表工具。datawindow 是 pb 中獲取專利技術的控件,它對數據的處理方法相當簡潔,能處理各種顯示格式,快速的報表制作能力深受pb開發者的喜愛。 這些軟件的基本特征是單數據源、條帶式(band)分組統計模型,通過控件拖拽方式繪制報表,在不編碼的情況下能完成簡單地行式(分組)報表和單片交叉報表,數據集中在數據庫中,可以共享。 但這一時期的用戶需求已經與前一階段的需求大為不同。用戶希望放在數據庫中的數據能
11、以自己熟悉的方式展現(復雜的表樣、統計運算等),而這些報表軟件的數據模型源于國外的報表習慣,解決復雜表樣的方法并不好,復雜的統計運算也要求開發人員編寫大量的程序代碼,導致報表開發時間太長,后期的維護工作量也很大。隨著b/s應用逐步取代c/s,市場上對web報表的要求越來越強烈,c/s時期的報表工具紛紛進行了若干改進與加強,普遍支持b/s結構,新的報表軟件也如雨后春筍一樣不斷出現。 在報表工具的發展過程中,還有一類特殊的表格式產品,最著名有ormula1和華表。這種類excel 的工具,展現能力非常強,但是因為沒有數據模型,導致其數據處理能力幾乎為零,程序員需要按格編寫代碼往里填數。相比較分組式
12、報表工具,類excel工具能徹底解決復雜報表的樣式問題,所以在實際應用中它一直是與分組報表互補的一類產品。swt/jface是eclipse推出優秀的java圖形api。rcp,也就是富客戶端,是在eclipse3.0之后分離出來的一個平臺。rcp技術其實就是插件開發,可以在一個很小的模板上加入各種插件,擴展性能。現在rcp已經成為eclipse開源項目的一個亮點,在國際上廣泛的使用大量pcr來開發桌面應用程序。在rcp平臺上,可以使用eclipse的插件機制來快速開發獨立應用的桌面應用,從而輕松擁有eclipse的界面結構和界面元素,節省了很多開發精力。運用swt/jface和rcp技術來開
13、發報表,是當前報表開發的主流方向。一方面,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技術在與本地界
14、面融合方面存在缺陷,因此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使用起來
15、非常簡單,效率高。只要了解基本的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應用、免費eclip
16、se插件,用它可以大大加快web開發、部署等工作。第三章 系統設計3.1系統體系結構本系統采用三層b/s架構 ,分別為表示層、設計層和數據層,如圖3-1所示。(1) 表示層(presentation-tier) 是報表顯示層。本報表系統的表示層有三種類型:web類型,excel類型,pdf類型。(2)設計層(designer-tier) 是本報表系統的重中之重。設計層設計的好壞直接影響到報表的使用。其主要任務是建立報表、修改報表、發布報表、生成模板等。這涉及到報表的數據來源,報表的格式,報表輸出,是連接表示層和數據層的橋梁。(3)數據層(data-tier)主要是和用戶有關。本報表系統可以與幾
17、種常用的數據庫系統交互。報表中可以輸入的數據很多,如圖表、序列號、常量等。數據層可以存儲并管理這些數據。 圖3-1系統體系結構圖3.2 軟件模塊結構本系統的軟件模塊結構,如圖3-2所示。 圖3-2 系統軟件模塊結構圖圖3-2中各模塊的基本功能如下: 新建報表:設置報表的名字、每頁顯示數目、選用報表模板;把這些數據存到preferences中,供保存報表使用。 新建數據源:設置數據源名稱,用它來標識數據連接;選擇數據庫類型,并設置各種連接參數;進行數據源說明;進行連接測試;連接成功后把數據源名稱和各種連接參數保存到datasource.xml文件中,供以后使用;而數據源說明就生成一個文本文件保存
18、。 編輯單元格:設置單元格的數據,如數據源列、函數、系列號、圖像;設置顏色,字體;設置所對應的行列是否擴展,所對應的行列是否排序。這些都要用一定的格式保存起來,供報表顯示時使用。 保存報表:設置單元格屬性后,保存設置內容。先從preferences讀取報表相關數據,然后生成報表的xml;遍歷表格,把表格各種信息填到xml中。編輯報表:保存表格后,如覺得不滿意,可以打開報表修改。讀取xml,把相關信息填到相應的單元格。也可以設置報表的每頁的行數、報表發布者、發布時間、報表說明。生成電子表格:電子表格可用來直接發布,也可用來編輯。先讀取報表xml文件,得到各個單元格的數據源,根據數據源不同,得到不
19、同的數據,并填到相應的電子表格內。可以設置電子表格的屬性。發布報表:先設置發布目錄,然后把項目文件夾下files目錄下的名和preferences中保存相同的,后綴名為xml、xls、css、pdf的文件都復制到發布目錄下。如發布目錄已有相同文件,就覆蓋。編輯css:css決定網頁頁面顯示格式,對報表非常重要。本系統提供一個模板,旁邊還有介紹各種標記的代表的內容的提示,這樣用戶就可以自己修改它。修改完后點“確定”,生成報表名+“.css”的樣式文件。生成模板:css不是很難,但要做一個好看的格式卻很難,所心有必要把前面生成的css文件保存起來,提供下次使用。首先設置模板名字,然后設置說明,點“
20、確定”后,系統會把當前報表的css文件復制到模板xml文件,并生成說明的txt文件。配置服務器:配置發布目錄、端口、最大線程數,以方便使用。3.3數據源與系統文件結構3.3.1 系統數據源報表就是數據的顯示,所以數據源很重要。本系統的數據源方案如下:(1) 提供建立數據源及管理數據源的功能。針對不同類型的數據庫數據,建立相應的數據源。建立了數據源后,就用一個xml文件保存數據源信息,以后可直接從xml文件讀取或修改連接信息。(2) 提供對其它類型數據源的支持。主要支持excel文件、函數、系列號、公式等數據源。excel文件可以直接解析為web格式,而函數,系列號,公式,圖像等可以直接插入。
21、3.3.2 系統文件結構本系統作為一個桌面應用系統,涉及到許多文件系統,不管用戶還是開發者,都有可能容易迷失在文件堆中,所以必須科學管理。為了解決此問題,本系統設計了系統主目錄文件結構,以下是系統主目錄的的文件截圖: 圖3-4 系統主目錄文件結構圖 圖3-4中各文件的功能如下:.metadata文件夾:系統自動生成,保存有日志文件。.setting文件夾: 系統自動生成,用于保存項目的各個參數。bin文件夾:存放已經編譯過的java的.class文件。datasource文件夾:存放數據源的datasource.xml文件,其中還有各種.txt文件,用來說明各個數據源。該文件夾結構如圖3-5所
22、示: 圖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文件夾示意圖從圖中可知
23、,src文件夾包括兩個包,一個是xautreportdesign包,里面有activator.java文件,這是rcp的激活類。另一個是com包。其實這個包里有三個子包:com. xautreportdesign.action,主要用來存放菜單,工具欄動作類的;com. xautreportdesign.util,主要用來存放一些工具類的,這些工具類對全局都有用;com.xautreportdesign.win,主要是界面方面的類,有一些是自動生成后我修改的。com. xautreportdesign.action包中的一部分類如圖3-8所示: 圖3-8 com. xautreportdesi
24、gn.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、perties、javacompiler.a
25、rgs、plugin.xml、plugin_customization.ini都是系統自動生成的。build.xml:是用ant生成的,為系統打包用。rduct:是要生成的新產品配置文件。splash.bmp:系統啟動時產閃動畫面使用。3.3.3 報表顯示部分文件對于報表web顯示部分,有如下重要文件或文件夾:datasource文件夾:存放數據源文件datasourece.xml。photo文件夾:存放需要的圖片文件。.css文件:是報表的css文件。report.jsp:是解析保存報表信息的.xml的文件。exceltoweb.jsp:是解析excel并生成web的文件。
26、第四章 系統實現4.1主要實現算法4.1.1新建報表流程圖 圖4-1 新建報表算法流程圖 該算法首先判斷是否已有同名的報表,然后判斷行數是否為數字,最后存入preferences中。4.1.2 新建數據源流程圖 圖4-2 新建數據源算法流程圖 該算法先選擇合適自己的數據庫,然后輸入信息,最后連接,看是否成功,若成功就把信息保存起來。4.1.3編輯單元格流程圖圖4-3 新建報表算法流程圖 該算法首先要得到當前鼠標的位置,然后轉化為表格的行列,最后選擇數據源,并設置單元格屬性。4.1.4 保存報表流程圖 圖4-4 保存報表算法流程圖該算法首先從preferences中讀取報表相關信息,生成報表名的
27、xml文件。然后遍歷表格,讀取各非空單元格的值及屬性,填入寫入小xml文件中,最后看是否用到模板,如用到,就生成報表名的css文件。生成xml的代碼如下所示: a1 在xautreportfile中, “name”代表報表的名字,“tempname”代表報表用到的模板,“rownum”代表web頁每頁顯示的行數,“ownername”代表作者,time代表發布時間,intro代表是否有說明內容。而columm代表一個單元格,“datasource”代表數據源,里面不同的部分又代表不同的意思:如前面為“d:”,那代表數據庫,中間代表前面建的數據源的名稱,最后代碼數據源的列。如前面是“i:”,那代
28、表常量,后面部分就是常量的值。、如前面是“s:”,那代表系列號,后面代表系列號的一部分。如前面是“f:”,那代表的是函數,后面是函數。“span”,代表擴展情況。擴展就是其它單元格的值是否依賴這個單元格的值;“arrange”代表是否排序;“color”代表是顏色,;“font”代表字體。而這個單元格的id是a1。4.1.5 生成電子表格流程圖 圖4-5 生成電子表格算法流程圖 該算法首先從preferences中得到當前報表名,然后讀取報表xml文件,得到數據源名稱。讀取數據源xml,遍歷得到數據源的各種參數。用這些參數連接數據庫。用poi創建excel文件。把數據庫中數據寫入excel文件
29、。4.1.6 發布報表流程圖 圖4-6 發布報表算法流程圖該算法首先從preferences中查看發布目錄,如有,就復制報表xml到發布目錄,如沒有,就設置。然后就開始判斷是否有相關文件,如有,就一同復制,因為不復制,就沒有用。4.1.7 編輯css流程圖 圖4-7 編輯css算法流程圖該算法首先從css模板中讀出模板內容,并顯示出來,提供用戶修改。修改完成后點確定,從preferences得當前報表,然后生成報表的css文件,如已有相同的就覆蓋。最后把修改后的css寫入報表文件。4.1.8 生成模板流程圖 圖4-8 生成模板算法流程圖 該算法首先設置要生成模板的模板名及說明。然后生成模板文件
30、,當然是css類型。如模板說明不為空,也生成文件文件類型的說明書。然后從preferences中得到當前報表,由此得到當前報表的css文件,最后把這css文件的內容寫入模板文件里。4.1.9 配置服務器流程圖 圖4-9 配置服務器算法流程圖 該算法首先讀取服務器配置文件并顯示各個參數,這可以修改。點確定后,就把修改后值寫入配置文件,并更新相關視圖。4.2 系統編碼實現4.2.1 系統的主界面實現本系統采用eclipse rcp技術,也就是開發可以獨立運行的eclipse的插件。運用rcp技術,可以實現與eclipse一樣友好的界面,可以方便地組裝成一個很強大的系統,因為這是采用插件機制。本系統
31、的主界面如圖4-1所示: 圖4-1 報表設計系統主界面圖由圖4-1可以看到,本系統和eclipse界面有很大的相似性。本系統主要用到了包com.xautreportdesign.win。其中各個類的功能及重要代碼說明如下:application類:是rcp程序的入口類,rcp程序啟動后第一個執行就是它,它負責程序的載入與退出。這個類是建立項目后自動生成的,平常情況不需要修改。applicationworkbenchadvisor類:是配置工作臺的類,工作臺的初始化就在這完成。這個類是建立項目后自動生成的,可以修改成自己需要的。這個類的部分代碼如下:applicationworkbenchwin
32、dowadvisor類:用來設置窗口。一個工作臺可以有多個窗口,所以可以多個該類的對象。這個類是建立項目后自動生成的,可以修改成自己需要的。下面代碼說明了窗口大小為(700, 550),有工具欄,窗口標題,顯示狀態欄,生成系統托盤等。以下是該類的部分實現代碼:public void prewindowopen() /* 設置窗口初始化的各種屬性 */iworkbenchwindowconfigurer configurer = getwindowconfigurer();configurer.setinitialsize(new point(700, 550);configurer.setsh
33、owcoolbar(true);configurer.setshowstatusline(false);configurer.settitle(報表生成系統);configurer.setshowperspectivebar(true);configurer.setshowstatusline(true);final iworkbenchwindow window = getwindowconfigurer().getwindow();/* 創建系統托盤 */trayitem = inittrayitem(window);/* 如果支持系統托盤,則創建托盤的菜單 */if (trayitem
34、!= null) createpopupmenu(window); perspective類:是透視圖類。透視圖是各個視圖,編輯面組成的一個專用的程序界面。本類是項目默認生成,當然也可以寫自己的視圖,只要實現iperspectivefactory接口。下面就是本透視圖的布局部分代碼,效果如圖4-1所示。public void createinitiallayout (ipagelayout layout) string editorarea = layout.geteditorarea();layout.seteditorareavisible(true);layout.setfixed(fa
35、lse);/ 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
36、(serverview.id).setmoveable(false);layout.addplaceholder(editareaview.id, ipagelayout.top, 0.50f,editorarea);layout.addplaceholder(attributeview.id, ipagelayout.bottom, 0.25f,editorarea);layout.getviewlayout(attributeview.id).setcloseable(false);layout.getviewlayout(attributeview.id).setmoveable(fal
37、se);applicationactionbaradvisor類:負責創建和配置工作臺窗口上主菜單,工具欄,狀態欄等,是報表各種功能模塊相關入口。下面的代碼是用來建立系統托盤項。其中new separator()是畫一條分隔線,在菜單工具欄中也用到。public void filltrayitem(menumanager traymenu) traymenu.add(deployaction);traymenu.add(new separator();traymenu.add(exampleaction);traymenu.add(aboutaction);editareaview類:是編輯視
38、圖類。視圖相當于一個小窗口,顯示某一方面的內容,可以在一個頁面上放置幾個視圖。視圖可通過兩種方式創建:一通過擴展點:修改plugin.xml文件,設置視圖擴展點,在最后一行的前加入,下面的代碼說明了擴展點是org.eclipse.ui.views,視圖名字是“編輯區”,對應的java文件是com.xautreportdesign.win.editareaview,id是視圖的標識,為xautreportdesign.editareaview。對于其它視圖,都可以這樣創建: 二通過繼承抽象類viewpart類,要改寫類中createpartcontrol,setfocus方法。本視圖實現部分的代
39、碼如下所示:public void createpartcontrol(composite parent) createtoolbar();if (!isedit) setpartname(編輯 + reportname); elsesetpartname(未保存)編輯 + reportname);createtable(parent, colnum, rownum); 上面的代碼是實現視圖內容,其中最重要的是createtable()方法。這個方法是在視圖中創建類似excel中的表格。下面的代碼創建一個表格,并設置表格的樣式,部分代碼如下:composite c1 = new composi
40、te(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
41、 = 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 ta
42、bleeditor(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
43、() 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.contain
44、s(pt) column = i;break; 要把表格內容填到屬性視圖中相應的組件上,實現的方法是首先得到屬性視圖,其中通過getter()方法得到視圖組件,這樣就可以修改組件的值,同時得到表格單元格的值,用字符串分析技術得到不同的值,并填充到屬性視圖table中。實現代碼如下:final int col = column;/ 數據綁定iviewpart vp = getviewsite().getpage().findview(attributeview.id);attributeview av = (attributeview) vp;label titlelabel = av.getl
45、abel1();string colid = string.valueof(table.getselectionindex() + 1);titlelabel.settext(單元格:+ string.valueof(char) (64 + column) + colid);combo combo = av.getcombo();combo combo11 = av.getcombo11();combo combo1 = av.getcombo1();combo combo2 = av.getcombo2();string columnvalue = item.gettext(column);
46、int i = columnvalue.indexof(, 1);if (i = -1) combo.select(0);combo11.select(0);combo1.select(0);combo2.select(0); else string datasource = columnvalue.substring(0, i);if (datasource.startswith(f:) combo.select(2);combo11.settext(datasource.substring(2); else if (datasource.startswith(s:) combo.selec
47、t(1);combo11.settext(datasource.substring(2); else if (datasource.startswith(d:) int n = datasource.indexof(.);combo.settext(datasource.substring(2, n);combo11.settext(datasource.substring(n + 1); else if (datasource.startswith(i:) combo.select(0);combo11.settext(datasource.substring(2); else combo.
48、select(0);combo11.settext(datasource); attributeview類:是屬性視圖類,也就是用來修改單元格的屬性。本視圖的重點工作是編輯單元格屬性,所以工作重點是和編輯視圖交互,部分代碼如下:public void fillintable(final composite parent)throws numberformatexception iviewpart vp = getviewsite().getpage().findview(editareaview.id);editareaview eav = (editareaview) vp;table ta
49、ble = eav.gettable();int i = label1.gettext().indexof(:);string tablelocal = label1.gettext().substring(i + 1);string colid = tablelocal.substring(0, 1);string rowid = tablelocal.substring(1);char char1 = colid. tochararray ();int k = char10 - 64;tableitem item = table.getitem(integer.parseint(rowid) - 1);string valuestring = ; if (combo. getselectionindex() = 0) valuestring = i: + combo11.gettext() + + combo1.gettext()+ + c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年潛水及水下救撈裝備項目建議書
- 2025版清晰易懂的房屋租賃合同
- 2025年抗艾滋病用藥合作協議書
- 2025年大直徑硅單晶及新型半導體材料項目合作計劃書
- 2025年人工智能AI芯片項目建議書
- 線路樁施工方案
- 工序承包條款解讀3篇
- 度假村安全監管合同3篇
- 工期延誤導致的合同違約處理3篇
- 會計賬目清晰承諾書加強財務監督3篇
- 2025年導游從業資格知識點合輯
- 著名中醫婦科 夏桂成教授補腎調周法
- VSM(價值流圖中文)課件
- 考古發掘中文物的采集與保存課件
- 人工氣道的護理劉亞課件
- 專業技術人員
- 拌和場安全檢查表
- 節日主題班會 《感恩母親節》教學課件
- 新加坡sm214th面經44緋的同學
- 全國第七屆中小學音樂優質課比賽教學設計跳圓舞曲的小貓
- 我國城市馬拉松賽事發展現狀分析
評論
0/150
提交評論