日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

iReport+jasperReport之JFreeChart(圖表報(bào)表)

系統(tǒng) 2120 0

?說完 iReport+jasperReport之scriptlet ? 下來就得看看圖表了,jasperReport的圖表完全借助于外部的繪圖工具,charts和JFreeChart,其中JFreeChart是目前java最火的一個繪圖工具了,還是引用 JFreeChart簡單使用 ? 來實(shí)現(xiàn)我們的圖表吧,說到這里澄清一下,本篇寫的是jasperReport的圖表,下來會專門寫一篇關(guān)于jasperReport圖片報(bào)表。
????????jasperReport不重復(fù)發(fā)明車輪,在報(bào)表中是以一個變量的方式引入外部圖表的,下來我們看看是怎么實(shí)現(xiàn)
的,新建一變量jfreeChart 如圖:
iReport+jasperReport之JFreeChart(圖表報(bào)表)
????????緊接著我們在報(bào)表上放置一圖片控件,下來一篇我會詳細(xì)說說圖片問題,右擊設(shè)置圖片控件屬性,如圖所示:
iReport+jasperReport之JFreeChart(圖表報(bào)表)
net.sf.jasperreports.engine.JRRenderable為jasperReport一個專門用來處理圖表問題公共接口,一切OK,現(xiàn)在就是這個變量怎么才能吧jfreechart傳遞到報(bào)表中呢,還記得上篇的scriptlet嗎?
新建一JChartReportDemo.java類,繼承自JRDefaultScriptlet,當(dāng)然要實(shí)現(xiàn)那些方法不過大部分我們都是空實(shí)現(xiàn)而已,我們只要在afterReportInit方法內(nèi)繪制圖表然后在set進(jìn)去我們定義的那個變量即可:

public ? void ?afterReportInit()? throws ?JRScriptletException? {
????????
????????
// create?pie?chart?dataset
????????DefaultPieDataset?dateset? = ? new ?DefaultPieDataset();

????????
// set?dataset?value
????????dateset.setValue( " Chinese " ,? 108 );
????????dateset.setValue(
" Math " ,? 110 );
????????dateset.setValue(
" English " ,? 74 );
????????dateset.setValue(
" Science?Department " ,? 226 );
????????
????????
/*
?????????*?create?jfreeChart?object
?????????*?the?first?parameter?is?pie?chart?title
?????????*?the?secend?parameter?is?dataset?of?pie?chart
?????????*?the?three?parameter?is?boolean?value,create?chart?note
?????????*?the?four?parameter?is?boolean?value,it's?a?tooltip?of?move?mouse?on
?????????*?configure?chart?to?generate?URLs,It's?get?a?PiePlot3D?object
?????????*?
?????????
*/

????????JFreeChart?freeChart?
= ?ChartFactory.createPieChart3D( " Report?Pie?Chart " ,?dateset,? true ,? true ,? false );
????????
????????PiePlot3D?plot3D?
= ?(PiePlot3D)?freeChart.getPlot();
????????plot3D.setNoDataMessage(
" No?data?to?display " );
????????
????????
// ?set?variable?"jfreeChart"?value
???????? this .setVariableValue( " jfreeChart " ,? new ?JFreeChartRenderer(freeChart));
????}

其中plot3D.setNoDataMessage("No data to display");這一句的意思是當(dāng)沒有顯示出圖表或是圖表沒有數(shù)據(jù)不顯示時會顯示我們定義的這些信息。

this .setVariableValue( " jfreeChart " ,? new ?JFreeChartRenderer(freeChart));

這一句當(dāng)然是set數(shù)據(jù)了,JFreeChartRenderer這個類是JRRenderable接口的間接實(shí)現(xiàn),從API上看jasperReport已不推薦我們使用了。
????OK,我們test一下吧!JChartReportMain.java

package ?org.bulktree.ireport.chart;

import ?java.io.File;
import ?java.io.FileInputStream;
import ?java.io.InputStream;
import ?java.util.HashMap;

import ?net.sf.jasperreports.engine.JREmptyDataSource;
import ?net.sf.jasperreports.engine.JasperCompileManager;
import ?net.sf.jasperreports.engine.JasperFillManager;
import ?net.sf.jasperreports.engine.JasperPrint;
import ?net.sf.jasperreports.engine.JasperReport;
import ?net.sf.jasperreports.view.JasperViewer;

/**
?*?
@author ?bulktree?Email:?laoshulin@gmail.com
?*?@date?Nov?28,?2008
?
*/

public ? class ?JChartReportMain? {
????
public ? static ? void ?main(String[]?args)? {
????????String?path?
= ? " D:/workspace/JFreeChartReportDemo.jrxml " ;

????????File?file?
= ? new ?File(path);
????????InputStream?in;
????????
try ? {
????????????HashMap?parameters?
= ? new ?HashMap();
????????????parameters.put(
" ReportTitle " ,? " LAOSHULIN " );
????????????in?
= ? new ?FileInputStream(file);
????????????JasperReport?jasperReport?
= ?JasperCompileManager.compileReport(in);
????????????JasperPrint?jasperPrint?
= ?JasperFillManager.fillReport(jasperReport,
????????????????????parameters,?
new ?JREmptyDataSource());
????????????JasperViewer?viewer?
= ? new ?JasperViewer(jasperPrint);
????????????viewer.setVisible(
true );
????????}
? catch ?(Exception?e)? {
????????????e.printStackTrace();
????????}

????}

}

看過前面幾篇應(yīng)該對這個相當(dāng)熟悉了吧! iReport+jasperReport之JFreeChart(圖表報(bào)表)

????iReport+jasperReport之JFreeChart(圖表報(bào)表) ? 中提到圖片控件,下面就看看jasperReport怎樣處理圖片吧!
新建一空白報(bào)表,分別畫兩個靜態(tài)文本字段和圖像控件上去
iReport+jasperReport之JFreeChart(圖表報(bào)表)
????????新建兩個參數(shù)分別為:imageParam和isShowImage,其中imageParam用來指定圖片路徑,isShowImage用來指定是否顯示圖片的。
????右擊查看圖片控件屬性:分別設(shè)置圖片參數(shù)和控制打印的表達(dá)式:
iReport+jasperReport之JFreeChart(圖表報(bào)表)

iReport+jasperReport之JFreeChart(圖表報(bào)表)
ok!這個就不用解釋了吧!試試就知道啦

JasperReport?jasperReport? = ?(JasperReport)?JRLoader
????????????????????.loadObject(
" D:\\workspace\\AppletTest.jasper " );
????????????HashMap?mapParam?
= ? new ?HashMap();
????????????mapParam.put(
" imageParam " ,? " D:\\workspace\\eg_smile.gif " );
????????????
/*
?????????????*?此參數(shù)用來控制是否顯示圖片
?????????????*?第二個參數(shù)在報(bào)表中設(shè)置為String類型
?????????????
*/

????????????mapParam.put(
" isShowImage " ,? " true " );
????????????
// ?生成jasperPrint對象
????????????JasperPrint?jasperPrint? = ?JasperFillManager.fillReport(jasperReport,
????????????????????mapParam,?
new ?JREmptyDataSource());

????關(guān)于jasperReport圖片處理很簡單google一下很多啊,最近又開始忙了突然想起上篇遺留這個問題,所以抽空寫下來,算是對上篇的一個補(bǔ)充吧!以后有時間會繼續(xù)寫下去,國際化、corsstab、web端打印、純java定制復(fù)雜報(bào)表等。

iReport+jasperReport之JFreeChart(圖表報(bào)表)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 台安县| 上高县| 米易县| 密山市| 江陵县| 临洮县| 沾化县| 彭州市| 五华县| 泗水县| 威远县| 安陆市| 沙河市| 中西区| 卢氏县| 鸡泽县| 隆回县| 北京市| 兴山县| 黄龙县| 荥阳市| 特克斯县| 蓝田县| 浦江县| 饶平县| 安泽县| 天峨县| 基隆市| 寻甸| 古田县| 堆龙德庆县| 开封市| 洛宁县| 嘉荫县| 平潭县| 府谷县| 南充市| 芜湖县| 顺昌县| 札达县| 上林县|