版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第11章 Struts 2整合JFreeChart開發(fā),對(duì)于大部分企業(yè)級(jí)應(yīng)用,通常需要生成大量的統(tǒng)計(jì)圖表。開發(fā)者可以通過手動(dòng)的編寫Applet從而顯示出這些統(tǒng)計(jì)圖表,顯然這種開發(fā)方式效率低下而且比較復(fù)雜。同樣開發(fā)者也可以使用統(tǒng)計(jì)圖表框架如JFreeChart,通過這些框架支持可以非常輕松的生成統(tǒng)計(jì)圖表。 Struts 2提供了JFreeChart插件支持,借助于該插件,Struts 2可以非常方便和容易的使用JFreeChart生成并顯示統(tǒng)計(jì)圖表。,11.1 初涉JFreeChart,11.1.1 JFreeChart簡介 11.1.2 下載和安裝JFreeChart 11.1.3 使用JFr
2、eeChart生成餅圖,11.1.1 JFreeChart簡介,本來來學(xué)習(xí)一款非常好的統(tǒng)計(jì)圖表生成工具JFreeChart。JFreeChart使用起來非常簡單,而且功能非常強(qiáng)大。大部分企業(yè)級(jí)應(yīng)用所需的統(tǒng)計(jì)圖,都能夠通過它生成。通過Struts 2整合JFreeChart后,Struts 2能夠直接以JFreeChart圖表作為表示層直接輸出。 下面先來感受一下使用JFreeChart生成的統(tǒng)計(jì)圖表,如圖11-1所示。,11.1.2 下載和安裝JFreeChart,登錄JFreeChart的官方網(wǎng)站,如圖11-2所示,并找到其中的JFreeChart項(xiàng)目選
3、擇下載。JFreeChart項(xiàng)目的當(dāng)前最高版本為1.0.9。 下載JFreeChart時(shí),有如下三個(gè)選項(xiàng),如圖11-3所示。 JFreeChart:JFreeChart項(xiàng)目的壓縮文件。 Documentation:JFreeChart的API文檔。 JCommon:JCommon項(xiàng)目的壓縮文件。,11.1.3 使用JFreeChart生成餅圖,下載和安裝完成后,就可以使用JFreeChart來生成各種統(tǒng)計(jì)圖表了。首先新建一個(gè)Java程序,并通過JFreeChart生成一個(gè)餅圖并顯示,代碼如下所示。,11.2 JFreeChart進(jìn)階,前面介紹了使用JFreeChart生成餅圖,開發(fā)者還可以通過
4、其他配置來改進(jìn)生成的統(tǒng)計(jì)圖表,如顯示圖例、顯示工具提示、顯示3D餅圖、設(shè)置圖表標(biāo)題字體、設(shè)置圖例字體以及設(shè)置圖表的標(biāo)簽字體以及透明度等。,11.2.1 顯示圖例,ChartFactory類中的createPieChart()接受5個(gè)參數(shù),其中第二個(gè)參數(shù)用來指定是否顯示圖例。如果設(shè)置其參數(shù)值為true,就可以顯示圖例,代碼如下所示。 / 使用工廠類創(chuàng)建餅圖 JFreeChart chart = ChartFactory.createPieChart( 學(xué)校職稱人員統(tǒng)計(jì)圖, dpd, true, false, false); 運(yùn)行該Java程序,就可以看到生成包含圖例的餅圖,如圖11-6所示。,1
5、1.2.2 顯示工具提示,ChartFactory類中的createPieChart()接受5個(gè)參數(shù),其中第三個(gè)參數(shù)用來指定是否顯示工具提示。如果設(shè)置其參數(shù)值為true,就可以顯示工具提示,代碼如下所示。 / 使用工廠類創(chuàng)建餅圖 JFreeChart chart = ChartFactory.createPieChart( 學(xué)校職稱人員統(tǒng)計(jì)圖, dpd, true, true, false); 運(yùn)行該Java程序,就可以看到生成的餅圖。當(dāng)把光標(biāo)移到餅圖上時(shí),顯示工具提示,如圖11-7所示。,11.2.3 顯示3D的餅圖,通過調(diào)用ChartFactory的.createPieChart3D()方
6、法,就可以創(chuàng)建一個(gè)3D的餅圖,代碼如下所示。 / 使用工廠類創(chuàng)建餅圖 JFreeChart chart = ChartFactory.createPieChart3D( 學(xué)校職稱人員統(tǒng)計(jì)圖, dpd, true, true, false); 運(yùn)行該Java程序,就可以看到生成的3D餅圖,如圖11-8所示。,11.2.4 設(shè)置圖表標(biāo)題字體,通過調(diào)用JFreeChart實(shí)例的setTitle()方法可以用來設(shè)置圖表標(biāo)題以及標(biāo)題字體等。這里設(shè)置圖表標(biāo)題為“學(xué)校職稱人員統(tǒng)計(jì)圖”,字體為宋體并加粗和傾斜,字體大小為20,代碼如下所示。 /設(shè)置圖標(biāo)標(biāo)題字體 chart.setTitle(new TextT
7、itle(學(xué)校職稱人員統(tǒng)計(jì)圖,new Font(宋體,Font.BOLD + Font.ITALIC,20); 運(yùn)行該Java程序,可以看到圖標(biāo)的標(biāo)題字體已經(jīng)發(fā)生改變,如圖11-9所示。,11.2.5 設(shè)置圖例字體,通過調(diào)用JFreeChart實(shí)例的getLegend()方法可以獲得圖表中的圖例。通過調(diào)用圖例的setItemFont()來設(shè)置圖例的字體。這里設(shè)置圖例字體為黑體并加粗,字體大小為15,代碼如下所示。 /取得圖表的圖例 LegendTitle lt = chart.getLegend(); /修改圖例的字體 lt.setItemFont(new Font(黑體,Font.BOLD,
8、15); 運(yùn)行該Java程序,可以看到圖例的字體已經(jīng)發(fā)生改變,如圖11-10所示。,11.2.6 設(shè)置圖表的標(biāo)簽字體以及透明度,通過調(diào)用JFreeChart實(shí)例的getPlot()方法可以獲得實(shí)際圖表實(shí)例。通過調(diào)用其圖表實(shí)例的setLabelFont()方法設(shè)置圖表中標(biāo)簽的字體,setBackgroundAlpha()方法用來設(shè)置圖表的背景透明度,setForegroundAlpha()方法用來設(shè)置圖表的前景透明度。這里設(shè)置圖表中標(biāo)簽的字體為微軟雅黑黑體并傾斜,字體大小為30,并設(shè)置圖表的背景透明度和前景透明度分別為0.98f和0.50f,代碼如下所示。 /獲得圖表的Plot對(duì)象 PiePlo
9、t piePlot = (PiePlot) chart.getPlot(); /設(shè)置圖表中標(biāo)簽的字體 piePlot.setLabelFont(new Font(微軟雅黑,Font.ITALIC,30); /設(shè)置圖表的背景透明度 piePlot.setBackgroundAlpha(0.98f); /設(shè)置圖表的前景透明度 piePlot.setForegroundAlpha(0.50f);,11.3 JFreeChart生成柱狀圖,通過JFreeChart可以非常方便的生成柱狀圖,下面將介紹使用JFreeChart生成柱狀圖并配置柱狀圖的其他的屬性。,11.3.1 柱狀圖,還可以使用JFree
10、Chart來生成柱狀圖。要生成柱狀圖只需調(diào)用ChartFactory的createBarChart()方法。該方法接受8個(gè)參數(shù),第一個(gè)參數(shù)用來設(shè)置圖表標(biāo)題,第二個(gè)用來設(shè)置目錄軸也就是Y軸的顯示標(biāo)簽,第三個(gè)參數(shù)用來設(shè)置數(shù)值軸也就是X軸的顯示標(biāo)簽,第四個(gè)參數(shù)用來設(shè)置數(shù)據(jù)集,第五個(gè)參數(shù)用來設(shè)置圖表的顯示方向,第六個(gè)參數(shù)用來設(shè)置是否顯示圖例,第七個(gè)參數(shù)用來設(shè)置是否生成工具提示,第八個(gè)參數(shù)用來設(shè)置是否生成URL鏈接。下面就來生成一個(gè)柱狀圖。,11.3.2 復(fù)雜柱狀圖,通過添加數(shù)據(jù)集,可以生成更加復(fù)雜的柱狀圖。下面添加三所不同學(xué)校的不同職稱數(shù)據(jù),代碼如下所示。,11.3.3 設(shè)置圖表中軸顯示標(biāo)簽字體,通過
11、調(diào)用JFreeChart實(shí)例的getPlot()方法可以獲得實(shí)際圖表實(shí)例。通過它的getDomainAxis()方法可以取得其中的橫軸,通過它的getRangeAxis()方法可以取得其中的縱軸。通過調(diào)用橫軸或縱軸的setLabelFont()可以設(shè)置其顯示標(biāo)簽字體。下面設(shè)置其橫軸和縱軸的標(biāo)簽字體為宋體并加粗,其字體大小為20,代碼如下所示。 /獲得圖表的Plot對(duì)象 CategoryPlot cPlot = (CategoryPlot) chart.getPlot(); /取得橫軸 CategoryAxis cAxis = cPlot.getDomainAxis(); /設(shè)置橫軸標(biāo)簽字體 c
12、Axis.setLabelFont(new Font(宋體,Font.BOLD,30); /取得縱軸 NumberAxis nAxis = (NumberAxis) cPlot.getRangeAxis(); /設(shè)置橫軸標(biāo)簽字體 nAxis.setLabelFont(new Font(宋體,Font.BOLD,30);,11.3.4 設(shè)置圖表中顯示標(biāo)簽字體,還可以通過調(diào)用橫軸或縱軸中的setTickLabelFont()方法來設(shè)置圖表中顯示標(biāo)簽的字體。下面設(shè)置其橫軸和縱軸的標(biāo)簽字體為宋體并加粗和傾斜,其字體大小為18,代碼如下所示。 /設(shè)置橫軸顯示標(biāo)簽字體 cAxis.setTickLabel
13、Font(new Font(宋體,Font.BOLD + Font.ITALIC,24); /設(shè)置縱軸顯示標(biāo)簽字體 nAxis.setTickLabelFont(new Font(宋體,Font.BOLD + Font.ITALIC,24);,11.3.5 設(shè)置橫坐標(biāo)顯示標(biāo)簽傾斜,還可以通過調(diào)用橫軸中的setCategoryLabelPositions()方法來設(shè)置圖表中橫坐標(biāo)顯示標(biāo)簽傾斜。下面設(shè)置其橫坐標(biāo)顯示標(biāo)簽向下傾斜45度,代碼如下所示。 /設(shè)置分類標(biāo)簽傾斜45度顯示 cAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_
14、45); 運(yùn)行該Java程序,可以看到生成的柱狀圖的橫坐標(biāo)顯示標(biāo)簽向下傾斜45度,如圖11-16所示。 也設(shè)置其橫坐標(biāo)顯示標(biāo)簽向上傾斜45度,如圖11-17所示,代碼如下所示。 /設(shè)置分類標(biāo)簽傾斜45度顯示 cAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);,11.3.6 立體柱狀圖,通過調(diào)用ChartFactory的createBarChart3D ()方法,就可以創(chuàng)建一個(gè)3D的柱狀圖,代碼如下所示。 /使用工廠類創(chuàng)建柱狀圖 JFreeChart chart = ChartFactory.createBarChart3
15、D( 學(xué)校職稱人員統(tǒng)計(jì)圖, 職稱, 人員數(shù)量, getDateset(), PlotOrientation.VERTICAL , true, true, false); 運(yùn)行該Java程序,就可以看到生成的3D柱狀圖,如圖11-18所示。,11.4 JFreeChart的常用統(tǒng)計(jì)圖表,通過JFreeChart可以非常方便的生成各種形式的統(tǒng)計(jì)圖表,如折線圖、面積圖、層疊區(qū)域圖等。下面將介紹使用JFreeChart生成這些統(tǒng)計(jì)圖表,以及介紹如何將生成的圖標(biāo)輸出到圖片。,11.4.1 折線圖,可以使用JFreeChart來生成折線圖,其使用方法和柱狀圖基本類似,只是顯示不同而已。通過調(diào)用ChartF
16、actory的createLineChart()方法,就可以創(chuàng)建一個(gè)折線圖,代碼如下所示。,11.4.2 立體折線圖,通過調(diào)用ChartFactory的createLineChart3D()方法,就可以創(chuàng)建一個(gè)3D的折線圖,代碼如下所示。 /使用工廠類創(chuàng)建柱狀圖 JFreeChart chart = ChartFactory.createLineChart3D( 學(xué)校職稱人員統(tǒng)計(jì)圖, 職稱, 人員數(shù)量, getDateset(), PlotOrientation.VERTICAL , true, true, false);,14.4.3 面積圖,可以使用JFreeChart來生成面積圖,其使用
17、方法和柱狀圖基本類似,只是顯示不同而已。通過調(diào)用ChartFactory的createAreaChart()方法,就可以創(chuàng)建一個(gè)面積圖,代碼如下所示。 /使用工廠類創(chuàng)建柱狀圖 JFreeChart chart = ChartFactory. createAreaChart ( 學(xué)校職稱人員統(tǒng)計(jì)圖, 職稱, 人員數(shù)量, getDateset(), PlotOrientation.VERTICAL , true, true, false); 運(yùn)行該Java程序,就可以看到生成的面積圖,如圖11-21所示。,14.4.4 層疊區(qū)域圖,可以使用JFreeChart來生成層疊區(qū)域圖,其使用方法和柱狀圖基
18、本類似,只是顯示不同而已。通過調(diào)用ChartFactory的createStackedAreaChart()方法,就可以創(chuàng)建一個(gè)層疊區(qū)域圖,代碼如下所示。 /使用工廠類創(chuàng)建柱狀圖 JFreeChart chart = ChartFactory.createStackedAreaChart ( 學(xué)校職稱人員統(tǒng)計(jì)圖, 職稱, 人員數(shù)量, getDateset(), PlotOrientation.VERTICAL , true, true, false);,14.4.5 將圖表輸出到圖片,前面都是通過使用JFrame來顯示的圖表,下面來看如何將生成的圖表輸出到圖片,代碼如下所示。,11.5 在網(wǎng)頁
19、中生成和顯示圖表,通過JFreeChart的ServletUtilities類可以將圖片輸出到Web服務(wù)器的臨時(shí)目錄下。并可以通過JFreeChart中提供了DisplayChart Servlet來顯示W(wǎng)eb服務(wù)器臨時(shí)目錄下的圖片。,11.5.1 生成統(tǒng)計(jì)圖表,下面來看如何在網(wǎng)頁中顯示生成圖表。這里選擇直接在JSP頁面中使用Java腳本代碼直接生成統(tǒng)計(jì)圖表,代碼如下所示。,11.5.2 顯示統(tǒng)計(jì)圖表,圖片生成好了,下面來看如何顯示該圖表。JFreeChart中提供了一個(gè)DisplayChart Servlet來顯示W(wǎng)eb服務(wù)器臨時(shí)目錄下的圖片。為了使用該Servlet,首先需要在web.xml中配置該Servlet,代碼如下所示。 DisplayChart org.jfree.chart.servlet.DisplayChart DisplayChart /DisplayChart ,11.6 Struts 2整合開發(fā),Struts 2提供了JFreeCh
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初二語文(知識(shí)鞏固)2026年下學(xué)期期末測試卷
- 2025年高職(廣告制作)廣告創(chuàng)意制作綜合測試卷
- 初三語文(綜合提升)2026年下學(xué)期期中測試卷
- 2025年高職材料加工(材料加工工藝)試題及答案
- 2025年大學(xué)大四(環(huán)境工程)環(huán)境工程畢業(yè)設(shè)計(jì)綜合試題及答案
- 2025年大學(xué)畜牧獸醫(yī)(動(dòng)物病理學(xué))試題及答案
- 2025年高職護(hù)理(清潔與舒適護(hù)理)試題及答案
- 2025年大學(xué)??疲ㄞr(nóng)業(yè)機(jī)械化技術(shù))農(nóng)機(jī)維修綜合測試題及答案
- 2025年高職飛機(jī)機(jī)電設(shè)備維修(發(fā)動(dòng)機(jī)維護(hù))試題及答案
- 2025年中職印刷機(jī)械(印刷機(jī)械技術(shù))試題及答案
- 2025年國家開放大學(xué)《管理學(xué)基礎(chǔ)》期末機(jī)考題庫附答案
- 2025年人民網(wǎng)河南頻道招聘備考題庫參考答案詳解
- kotlin android開發(fā)入門中文版
- 2025年蘇州工業(yè)園區(qū)領(lǐng)軍創(chuàng)業(yè)投資有限公司招聘備考題庫完整答案詳解
- 委內(nèi)瑞拉變局的背后
- 政府補(bǔ)償協(xié)議書模板
- 語文-吉林省2026屆高三九校11月聯(lián)合模擬考
- 2025年四川省高職單招模擬試題語數(shù)外全科及答案
- 2025年江蘇事業(yè)單位教師招聘體育學(xué)科專業(yè)知識(shí)考試試卷含答案
- 模擬智能交通信號(hào)燈課件
- 2.3《河流與湖泊》學(xué)案(第2課時(shí))
評(píng)論
0/150
提交評(píng)論