posts - 310, comments - 6939, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          在Eclipse RCP中開發JFreeChart示例

          Posted on 2007-10-16 16:25 詩特林 閱讀(6300) 評論(6)  編輯  收藏 所屬分類: Java
                                                         在Eclipse RCP中開發JFreeChart示例

          RCP,就是Rich Client Platform的縮寫,即富客戶平臺,是Eclipse進化的產物(自3.0版以后出現),是Eclipse組織向用戶提供的強大的開放性開發平臺,能夠使用戶方便地創建自己的基于Eclipse的應用程序,并且這些應用程序能夠得到Eclipse的底層支持。更重要的是,我們可以利用Java創建象Eclipse這么漂亮的桌面程序。

            有人說,RCP一定會變得非常流行。因為RCP,可以開發界面象Eclipse這樣漂亮的桌面程序。那就來做一個JFreeChat的示例吧。

          一、下載JFreeChart包

          1.http://www.jfree.org/jfreechart/

          2.用到的包:(注,我的開發環境是eclipse3.2)
        1. jcommon-1.0.10.jar

        2. jfreechart-1.0.6.jar

        3. jfreechart-1.0.6-experimental.jar

        4. jfreechart-1.0.6-swt.jar

        5. swtgraphics2d.jar


          二、新建項目

          在Eclipse下如何建立plug-in的內容在Google上一搜一大把,有些人會覺得乏味,但是沒關系,這只是一個快速的起步。下面大致說一下。有不明白的,可以參考http://www.vogella.de/articles/RichClientPlatform/article.html#using_jars,非常的詳細

          1、建完項目后記得把上面提到的JFreeChart包加入的項目“Propertires”的“Java Build Path”中。

          2、還需要在項目的META-INF/MANIFEST.MF文件的“runtime”中加入以上的包,不然運行時會說找不相關的類,如下圖


          三、建立View

          建View在上面文檔http://www.vogella.de/articles/RichClientPlatform/article.html#using_jars中5.2. Add a view to your application有講,我在這里大致上幾個圖說明一下。

          1.點擊配置文件的“extensions”,選擇"org.eclipse.views",右鍵,》"new"》"view",


          2.點擊右邊class*.;鏈接,來創建新的類




          3.此類的代碼如下

          package jfreechatrcp;

          import java.awt.Font;

          import org.eclipse.swt.SWT;
          import org.eclipse.swt.widgets.Composite;
          import org.eclipse.ui.part.ViewPart;
          import org.jfree.chart.ChartFactory;
          import org.jfree.chart.JFreeChart;
          import org.jfree.chart.plot.PiePlot;
          import org.jfree.data.general.DefaultPieDataset;
          import org.jfree.data.general.PieDataset;
          import org.jfree.experimental.chart.swt.ChartComposite;



          public class MyNewView extends ViewPart {



              
          public MyNewView() {

                  
          // TODO Auto-generated constructor stub

              }



              
          private static PieDataset createDataset() {

                  DefaultPieDataset dataset 
          = new DefaultPieDataset();

                  dataset.setValue(
          "豬肉"new Double(43.2));

                  dataset.setValue(
          "牛肉"new Double(10.0));

                  dataset.setValue(
          "豬肉"new Double(27.5));

                  dataset.setValue(
          "羊肉"new Double(17.5));

                  dataset.setValue(
          "雞肉"new Double(11.0));

                  dataset.setValue(
          "鴨肉"new Double(19.4));

                  
          return dataset;

              }




              
          /**

               * Creates a chart.

               * 

               * 
          @param dataset

               *            the dataset.

               * 

               * 
          @return A chart.

               
          */


              
          private static JFreeChart createChart(PieDataset dataset) {



                  JFreeChart chart 
          = ChartFactory.createPieChart("肉食品消費統計圖示例"// chart

                          
          // title

                          dataset, 
          // data

                          
          true// include legend

                          
          truefalse);



                  PiePlot plot 
          = (PiePlot) chart.getPlot();

                  plot.setSectionOutlinesVisible(
          false);

                  plot.setLabelFont(
          new Font("SansSerif", Font.PLAIN, 12));

                  plot.setNoDataMessage(
          "沒有統計數據");

                  plot.setCircular(
          false);

                  plot.setLabelGap(
          0.02);

                  
          return chart;



              }




              
          public void createPartControl(Composite parent) {

                  JFreeChart chart 
          = createChart(createDataset());

                  
          final ChartComposite frame = new ChartComposite(parent, SWT.NONE,

                          chart, 
          true);

              }




              
          /**

               * Passing the focus request to the viewer's control.

               
          */


              
          public void setFocus() {

              }


              
          }



          4.修改Perspective類,使程序能夠運行

          package jfreechatrcp;

          import org.eclipse.ui.IPageLayout;
          import org.eclipse.ui.IPerspectiveFactory;

          public class Perspective implements IPerspectiveFactory {

              
          public void createInitialLayout(IPageLayout layout) {
                  layout.addView(
          "jfreechatrcp.MyNewView", IPageLayout.TOP,IPageLayout.RATIO_MAX, IPageLayout.ID_EDITOR_AREA);
              }


          }


          5.運行程序
          META-INF/MANIFEST.MF》》Launch as Eclipse application

          四、結果


          源代碼jfreechatRCP.rar,請自行下載jfreechart包

          參考文獻
          http://www.vogella.de/articles/RichClientPlatform/article.html#firstplugin
          http://www.vogella.de/articles/EclipseJFreeChart/article.html


        6. 評論

          # re: 在Eclipse RCP中開發JFreeChart示例  回復  更多評論   

          2007-10-16 16:58 by 交口稱贊
          我暈死
          現在有ChartComposite 了啊。。。。


          以前費了老大勁寫的能顯示報表的view

          現在就一行代碼。。。。。。。。。。。

          # re: 在Eclipse RCP中開發JFreeChart示例  回復  更多評論   

          2007-10-17 07:45 by 翔南
          呵呵 好東西!
          收藏啦

          # re: 在Eclipse RCP中開發JFreeChart示例[未登錄]  回復  更多評論   

          2007-10-17 09:27 by 阿蜜果
          嘻嘻,這東西好!

          # re: 在Eclipse RCP中開發JFreeChart示例  回復  更多評論   

          2007-12-24 13:51 by GentleYang
          俺一同事瘋狂追逐著RCP......個人 作品都好幾個嘞

          # re: 在Eclipse RCP中開發JFreeChart示例  回復  更多評論   

          2009-10-09 09:54 by 陶林
          您好!我們公司最近在做個RCP的項目,要用到JFreeChart畫圖。我也照著您這個模式做了一個在RCP中開發JFreeChart的一個實例,代碼基本上都是拷貝您的,但是我運行的時候出問題了,視圖里沒有我要的餅圖,只顯示一個錯誤“無法創建視圖:插件“Plugin0927”無法實例化類“plugin0927.ui.TeachUnitClass”?!蔽业腞CP項目名“Plugin0927”,視圖類是“TeachUnitClass”。打開這個錯誤,看到里面有一句是:“Java.lang.NoClassDefFoundError:org/jfree/data/general/PieDataset”。后來仔細研究您的這篇博客,發現問題出在“2、還需要在項目的META-INF/MANIFEST.MF文件的“runtime”中加入以上的包,不然運行時會說找不相關的類”!現在已經解決問題!非常謝謝您的這篇博客!這個問題已經困擾我好幾天了,國慶長假里一直在思考這個問題!

          # re: 在Eclipse RCP中開發JFreeChart示例[未登錄]  回復  更多評論   

          2015-07-29 15:44 by 果凍
          謝謝樓主,不過樓主應該還沒說完吧?需要在runtime的classpath中把以上的包加入進去,否則會出現問題:無法實例化類
          主站蜘蛛池模板: 房产| 新郑市| 玉树县| 静乐县| 山阳县| 晋江市| 鄱阳县| 馆陶县| 景东| 沭阳县| 福鼎市| 菏泽市| 琼中| 普宁市| 浮梁县| 张掖市| 苍溪县| 兰西县| 琼中| 安远县| 五家渠市| 湘潭县| 麦盖提县| 兰西县| 成安县| 锦州市| 宁陵县| 盐池县| 无极县| 福州市| 牟定县| 南和县| 中阳县| 青田县| 沈丘县| 龙游县| 怀宁县| 南皮县| 汉中市| 崇阳县| 嘉鱼县|