前段時間在作一個jfreechart的項目,頭兒說,最好圖表能帶上連接,這樣比較直觀,我先把基本的功能實現以後,正好在oschina上看到紅薯的回帖,介紹瞭如何給jfreechart加上連接,而後我就在google百度了一下,果真有很多好的方法,我如今就把個人代碼貼上來。google
我發現給piechar與給barchart加連接的方法是不同的spa
首先是piechar,用到了對象
Map map = new HashMap();ip
map.put("key1","link1");//注意這裏的key要與你圖裏的DefaultPieDataset對象的key值對應才行get
map.put("key2","link2");generator
map.put("key3","link3");it
CustomPieURLGenerator generator = new CustomPieURLGenerator();
generator.addURLs(map);
piePlot.setURLGenerator(generator);io
ChartRenderingInfo info1 = new ChartRenderingInfo(new StandardEntityCollection());百度
String piefilename = request.getContextPath() + "/DisplayChart?filename=" +
ServletUtilities.saveChartAsPNG(piechart, 300, 300,
info1,//這個參數要有,之前沒作連接時,這裏寫null的,由於我同時輸出倆圖,還要創建兩個ChartRenderingInfo 對象,不能共用一個List
request.getSession());
String piemap = ImageMapUtilities.getImageMap(piefilename, info1, toolTipTagFragmentGenerator,
new StandardURLTagFragmentGenerator());
request.setAttribute("piepic", piepic);
request.setAttribute("barmap", barmap);
這裏把barmap傳到前臺,而後用<img usemap="#${barmap}">去調用就好了要注意,在前臺barmap是要輸出在頁面才管用的,只寫到request裏是不行的
下面寫一下barchart怎麼加連接.
piechart用的map存key與link的關係,barchart用的list存的linklist他是要數柱子的,感受沒有map的好用,可能他之後也得改爲map的
List linklist = new ArrayList();
linklist.add("link1");
linklist.add("link2");
CustomCategoryURLGenerator generator = new CustomCategoryURLGenerator();
generator.addURLSeries(linklist);
renderer.setSeriesItemURLGenerator(0, generator);//第一參數是從第幾個柱子開始
ChartRenderingInfo info2 = new ChartRenderingInfo(new StandardEntityCollection());//剛纔說了,這裏要寫兩次
String barfilename = request.getContextPath() + "/DisplayChart?filename=" +
ServletUtilities.saveChartAsPNG(barchart, 300, 300,
info2, request.getSession());
String barmap = ChartUtilities.getImageMap(barfilename, info2, toolTipTagFragmentGenerator,
new StandardURLTagFragmentGenerator());
request.setAttribute("barmap", barmap);
(完)
由於個人項目沒有把生成chart的過程寫到page裏,類也挺多的,我就沒按我項目裏的格式寫,第一次寫這種東西,挺亂的,哎