jfreechart 的java對象關係簡釋

來源:互聯網
上載者:User
chart|java對象
 jfreechart 的java對象關係簡釋

部落格中國分類:java技術, 

jfreechart是一個優秀的開源JAVA 2D項目,缺點是缺乏文檔,中英文都是如此。本文是經驗總結的第二部分

二、jfreechart作圖類對象的協調關係

jfreechart 的繪圖對象由一個org.jfree.chart.JFreeChart組成,但作為繪圖關鍵的Graphich2d通過 org.jfree.chart.render.*中的對應render類封裝後設入,換言之,開發人員可以通過對基礎圖板Graphic的設定,完成必要的繪圖預定效果設計;而大多數的修改,實際上可以通過封裝的各個類操作而不用直接修改Graphic對象屬性(誰記得呢?)。jfreechart的資料介面由org.jfree.chart.plot.*中的不同的plot封裝,與之相對應的是不同的dataset,位於 org.jfree.chart.data.*中不同的dataset介面封裝。使用jfreechart作圖的關鍵在於生一個個相應的資料集對象,,然後封裝成對應的一個個繪圖集plot對象,最後再封裝成不同的JFreeChart對象交付輸出。通過new方法可以一步步完成上面的步驟。換言之, plot類是圖形的設計,render 是繪製的工具,而dataset則是填充的資料;這樣就把作圖的三個關鍵因素分別抽象成統一的介面,互想搭配出各種圖形。對於可能有多套資料集的圖表,如時間序列的多條曲線走勢圖(象幾隻股票),傳入plot的不是資料集,而是資料集的集合,一般命名為某某collection。

通過 ChartFactory的不同方法產生不同的Chart類型,可以相應地縮小了由dataset對不同的chart對象的操作過程代碼量,直接獲得 chart對象。實際上是由工廠類代替使用者產生必要的render和plot類,如果使用者不想使用預設的設定,就需要再通過get方法得出相應的plot 對象進行修改。jfreechart的最後映像輸出一般由org.jfree.chart.ChartUtilites完成,這個類可以向接定的 PrintWriter對象輸出完成的Chart對象。在伺服器程式中,另一個ServerUtilites方法調用了這個方法,產生一個映像臨時檔案,並向JSP或servlet返回這個檔案對象,通過把這個映像的生命週期與session綁定,希望可以實現緩衝功能,降低伺服器動態產生映像的損耗。但是也有很大的問題其一就是如果session很長,就等於不能產生即時映像,其二就是訪問的人多了,伺服器的負擔似乎反而加大了。這個演算法顯然有問題,倒不如修改成按時間更新一個映像更為合適。

觀察代碼,兩者效果是一樣的:

A、Factory 方法:

JFreeChart chart = ChartFactory.createPieChart3D(  "2000 GDP分布比例圖",  data,  true,  false,  false  );//指定獲得不同的實現chart對象,含有不同的plot繪圖對象   PiePlot plot = (PiePlot) chart.getPlot();//擷取plot對象用於修訂屬性,強製造型,以便調用各自的方法plot.setLabelGenerator(new StandardPieItemLabelGenerator( "{0} = {2}", NumberFormat.getNumberInstance(), NumberFormat.getPercentInstance() ));//設定注釋方式plot.setForegroundAlpha(0.5f);//設定透明度plot.setNoDataMessage("無記錄內容");//無記錄異常顯示

B、手工產生對象

PiePlot plot = new PiePlot(dataset);

plot.setLabelGenerator(new StandardPieItemLabelGenerator( "{0} = {2}", NumberFormat.getNumberInstance(), NumberFormat.getPercentInstance() ));//設定注釋方式plot.setForegroundAlpha(0.5f);//設定透明度plot.setNoDataMessage("無記錄內容");//無記錄異常顯示

JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, false);


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.