資源描述:
《使用+jfreechart來創(chuàng)建基于web圖表》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、使用JFreeChart來創(chuàng)建基于web的圖表WWW的發(fā)展使得基于因特網(wǎng)的應(yīng)用程序不再局限于靜態(tài)或者簡單的動態(tài)內(nèi)容提供。傳統(tǒng)的一些以軟件包形式發(fā)布應(yīng)用程序例如報表系統(tǒng)等都在逐漸搬到因特網(wǎng)上。但是這兩者之間有著天壤之別,雖然對于數(shù)據(jù)獲取、業(yè)務(wù)處理等方面基本類似,但是最大的差別在于用戶界面。為了能在web瀏覽器上顯示要求用戶界面使用HTML以及圖片的方式來展現(xiàn)數(shù)據(jù),而傳統(tǒng)的一些利用操作系統(tǒng)本身的控件來開發(fā)的用戶界面無法適應(yīng)琳瑯滿目的客戶端,因此在這里也變得無能為力?;氐奖疚牡念}目上來,為了創(chuàng)建一個可以在web瀏覽器上查看到圖表一般有兩種做法:第一種就是使用a
2、pplet利用java本身對圖形的支持來顯示一個圖表;第二種就是直接在web服務(wù)器端生成好圖表圖片文件后發(fā)送給瀏覽器。第一種方式顯然對于客戶端要求太高,隨著現(xiàn)在主流瀏覽器放棄對JAVA的支持后,這種方式只適合一些局域網(wǎng)的應(yīng)用,而對于因特網(wǎng)的環(huán)境就顯得不太適合。因此我們下面將介紹一個JAVA的圖表引擎JFreeChart用來產(chǎn)生基于WEB的圖表。一.JFreeChart項目簡介JFreeChart是開放源代碼站點SourceForge.net上的一個JAVA項目,它主要用來各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普通柱狀圖以及堆棧柱狀圖)、線圖、區(qū)域圖
3、、分布圖、混合圖、甘特圖以及一些儀表盤等等。這些不同式樣的圖表基本上可以滿足目前的要求。為了減少篇幅本文主要介紹前面三種類型的圖表,讀者可以觸類旁通去開發(fā)其他樣式的圖表。下面幾個是JFreeChart產(chǎn)生的這三種類型圖表的結(jié)果:圖1圖2圖3上面的三個圖都是表示四個季度的某個產(chǎn)品的銷量信息。在繼續(xù)下面小節(jié)之前必須先準(zhǔn)備好開發(fā)環(huán)境,因為是基于WEB瀏覽器的圖表展現(xiàn),因此需要一個Servlet引擎或者是J2EE應(yīng)用服務(wù)器(例如WebSphere,Tomcat等)。WEB環(huán)境的搭建就不累贅了,讀者根據(jù)喜好自行安裝。JFreeChart引擎本身需要到SourceF
4、orge.net上下載,地址如下:JFreeChart主頁:http://www.jfree.org/jfreechart/index.htmlJFreeChart下載頁面:http://sourceforge.net/projects/jfreechart/下載的時候需要注意的是必須下載兩個文件:JFreeChart以及Jcommon。目前最新配套版本是:JFreeChart0.9.11Jcommon0.8.6這里有點筆者在開發(fā)中遇見的問題需要注意的是:在使用Eclipse開發(fā)的時候會報一個莫名其妙的錯誤,錯誤可能指向某個類文件的第一行。遇到這樣的問題
5、一般是因為沒有把Jcommon的jar包設(shè)置到項目的類路徑中的緣故。具體的原因不祥。一.解讀JFreeChart的源碼結(jié)構(gòu)在開始使用JFreeChart之前我們有必要先大概了解一下JFreeChart本身的結(jié)構(gòu)以及它所帶一些例子程序,這樣有助于我們下一步自行開發(fā)。下載JFreeChart包后已經(jīng)帶有非常豐富的例子,因為JFreeChart這個項目本身的使用文檔非常少,因此學(xué)習(xí)它最好的辦法就是學(xué)習(xí)它所帶的例子源碼。在包org.jfree.chart.demo中有幾十個文件用于展示JFreeChart所能支持的所有圖表的結(jié)果。如果你的JDK是比較新的情況下可
6、能在運行這些例子時會有問題,現(xiàn)象如下:java.lang.UnsatisfiedLinkError:initDDrawatsun.awt.windows.Win32OffScreenSurfaceData.initDDraw(NativeMethod)atsun.awt.windows.Win32OffScreenSurfaceData.(Win32OffScreenSurfaceData.java:141)atsun.awt.Win32GraphicsDevice.(Win32GraphicsDevice.java:58
7、)atsun.awt.Win32GraphicsEnvironment.makeScreenDevice(Win32GraphicsEnvironment.java:168)atsun.java2d.SunGraphicsEnvironment.getScreenDevices(SunGraphicsEnvironment.java:240)atsun.awt.Win32GraphicsEnvironment.getDefaultScreenDevice(Win32GraphicsEnvironment.java:61)atjava.awt.Window
8、.init(Window.java:224)atjava.awt.Window.