ice world

          There is nothing too difficult if you put your heart into it.
          posts - 104, comments - 103, trackbacks - 0, articles - 0

          導航

          <2011年4月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(8)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          jfreechart畫圖tooltip不顯示的問題

          Posted on 2011-04-16 13:59 IceWee 閱讀(936) 評論(0)  編輯  收藏 所屬分類: Java
          最近項目中需要用到jfreechart,以前只是簡單的玩玩而已,一直沒有真正的應用到實際項目中,今天在畫圖的時候可把自己折磨慘了,就一個小小的tooltip死活不出來。


          我用的Spring + Struts,有很多人用jfreechart都是寫的Servlet,其實用Struts是一樣的。

          我起初在Struts的Action中使用org.jfree.chart.ChartUtilities。writeChartAsPNG(java.io.OutputStream out, JFreeChart chart, int width, int height) 方法,將生成的JFreeChart對象寫到輸出流中,return自然是null,這樣做界面可以顯示Action寫過來的圖片,但是沒有 tooltip的出現。后來我發現很多人都不是直接把圖片寫到流中的,而是在JSP頁面通過<img>標簽來顯示圖片的。于是我也使用了主流方式顯示圖片,使用chartName = ServletUtilities.saveChartAsPNG(chart, width, height, info, session);將圖片文件名設置請求屬性發給JSP頁面,頁面通過圖片標簽顯示圖片,結果圖片依舊顯示正常,但是tooltip還是沒有出來,由于剛剛用這東西,一點都不了解,于是開以往項目中是如何寫的,我發現別人的代碼中有這樣一行:ChartUtilities.writeImageMap(pw, chartName, info, false);這是將圖片地圖寫到流中,而且頁面的圖片標簽中也多了個usermap屬性,我仿佛有點清醒了,于是效仿著做了一下,tooltip果真出現了。

          JSP代碼:

          <%    
                  JFreeChart chart 
          = (JFreeChart)request.getAttribute("chart");    
                  
          String chartName = Common.generateChart(chart, session, new PrintWriter(out), 760410);
          %>


          Common的generateChart方法就是放回圖片的文件名,并且將圖片地圖寫入到當前的流中。

          Java代碼:

          public static String generateChart(JFreeChart chart, HttpSession session,
                      PrintWriter pw, 
          int width, int height) {
                  String chartName 
          = "";
                  
          try {
                      ChartRenderingInfo info 
          = new ChartRenderingInfo(
                              
          new StandardEntityCollection());
                      chartName 
          = ServletUtilities.saveChartAsPNG(chart, width, height,
                              info, session);
                      
          /** 將圖片地圖寫入PW中 */
                      ChartUtilities.writeImageMap(pw, chartName, info, 
          false);
                      pw.flush();
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }

                  
          return chartName;
              }


          起初我并沒有使用Common這個方法,而是直接將這個方法中的代碼寫在了Struts的Action中,發現無效,而且在pw.flush()一行出現了異常,流這里太爛!哎!提示刷新后就不能再return了。于是去掉這行后圖片正常顯示,但沒有tooltip。我懷疑是Struts中用 response獲取的PrintWriter并不是返回到JSP中用out封裝的PrintWriter,根本就不是,還懷疑什么,這不是廢話嘛!所以在當前流中并沒有圖片地圖,自然不顯示tooltip了。

          顯示圖片的IMG標簽

          <img src="<%=request.getContextPath()%>/<%=chartName%>" height="100%" border=0 usemap="#<%=chartName%>" >



          主站蜘蛛池模板: 禹城市| 定远县| 共和县| 全州县| 长武县| 克山县| 周至县| 桃源县| 渭南市| 拜城县| 广昌县| 自贡市| 石柱| 莒南县| 浠水县| 塔城市| 二连浩特市| 手游| 新密市| 城固县| 延边| 广河县| 旅游| 吴忠市| 威信县| 莱阳市| 和顺县| 盐山县| 铜梁县| 怀化市| 福州市| 亚东县| 扬中市| 衡水市| 鹤峰县| 英吉沙县| 甘洛县| 呼和浩特市| 夏津县| 博罗县| 巴塘县|