posts - 310, comments - 6939, trackbacks - 0, articles - 3
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          在Eclipse RCP中開(kāi)發(fā)JFreeChart示例

          Posted on 2007-10-16 16:25 詩(shī)特林 閱讀(6301) 評(píng)論(6)  編輯  收藏 所屬分類: Java
                                                         在Eclipse RCP中開(kāi)發(fā)JFreeChart示例

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

            有人說(shuō),RCP一定會(huì)變得非常流行。因?yàn)?strong style="color: black; background-color: #a0ffff">RCP,可以開(kāi)發(fā)界面象Eclipse這樣漂亮的桌面程序。那就來(lái)做一個(gè)JFreeChat的示例吧。

          一、下載JFreeChart包

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

          2.用到的包:(注,我的開(kāi)發(fā)環(huán)境是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


          二、新建項(xiàng)目

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

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

          2、還需要在項(xiàng)目的META-INF/MANIFEST.MF文件的“runtime”中加入以上的包,不然運(yùn)行時(shí)會(huì)說(shuō)找不相關(guān)的類,如下圖


          三、建立View

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

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


          2.點(diǎn)擊右邊class*.;鏈接,來(lái)創(chuàng)建新的類




          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("肉食品消費(fèi)統(tǒng)計(jì)圖示例"// 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(
          "沒(méi)有統(tǒng)計(jì)數(shù)據(jù)");

                  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類,使程序能夠運(yùn)行

          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.運(yùn)行程序
          META-INF/MANIFEST.MF》》Launch as Eclipse application

          四、結(jié)果


          源代碼jfreechatRCP.rar,請(qǐng)自行下載jfreechart包

          參考文獻(xiàn)
          http://www.vogella.de/articles/RichClientPlatform/article.html#firstplugin
          http://www.vogella.de/articles/EclipseJFreeChart/article.html


        6. 評(píng)論

          # re: 在Eclipse RCP中開(kāi)發(fā)JFreeChart示例  回復(fù)  更多評(píng)論   

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


          以前費(fèi)了老大勁寫(xiě)的能顯示報(bào)表的view

          現(xiàn)在就一行代碼。。。。。。。。。。。

          # re: 在Eclipse RCP中開(kāi)發(fā)JFreeChart示例  回復(fù)  更多評(píng)論   

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

          # re: 在Eclipse RCP中開(kāi)發(fā)JFreeChart示例[未登錄](méi)  回復(fù)  更多評(píng)論   

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

          # re: 在Eclipse RCP中開(kāi)發(fā)JFreeChart示例  回復(fù)  更多評(píng)論   

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

          # re: 在Eclipse RCP中開(kāi)發(fā)JFreeChart示例  回復(fù)  更多評(píng)論   

          2009-10-09 09:54 by 陶林
          您好!我們公司最近在做個(gè)RCP的項(xiàng)目,要用到JFreeChart畫(huà)圖。我也照著您這個(gè)模式做了一個(gè)在RCP中開(kāi)發(fā)JFreeChart的一個(gè)實(shí)例,代碼基本上都是拷貝您的,但是我運(yùn)行的時(shí)候出問(wèn)題了,視圖里沒(méi)有我要的餅圖,只顯示一個(gè)錯(cuò)誤“無(wú)法創(chuàng)建視圖:插件“Plugin0927”無(wú)法實(shí)例化類“plugin0927.ui.TeachUnitClass”。”我的RCP項(xiàng)目名“Plugin0927”,視圖類是“TeachUnitClass”。打開(kāi)這個(gè)錯(cuò)誤,看到里面有一句是:“Java.lang.NoClassDefFoundError:org/jfree/data/general/PieDataset”。后來(lái)仔細(xì)研究您的這篇博客,發(fā)現(xiàn)問(wèn)題出在“2、還需要在項(xiàng)目的META-INF/MANIFEST.MF文件的“runtime”中加入以上的包,不然運(yùn)行時(shí)會(huì)說(shuō)找不相關(guān)的類”!現(xiàn)在已經(jīng)解決問(wèn)題!非常謝謝您的這篇博客!這個(gè)問(wèn)題已經(jīng)困擾我好幾天了,國(guó)慶長(zhǎng)假里一直在思考這個(gè)問(wèn)題!

          # re: 在Eclipse RCP中開(kāi)發(fā)JFreeChart示例[未登錄](méi)  回復(fù)  更多評(píng)論   

          2015-07-29 15:44 by 果凍
          謝謝樓主,不過(guò)樓主應(yīng)該還沒(méi)說(shuō)完吧?需要在runtime的classpath中把以上的包加入進(jìn)去,否則會(huì)出現(xiàn)問(wèn)題:無(wú)法實(shí)例化類
          主站蜘蛛池模板: 桐柏县| 盖州市| 贵德县| 陆良县| 辽阳县| 调兵山市| 永平县| 内乡县| 巧家县| 额敏县| 大同县| 本溪市| 梁山县| 宕昌县| 涞源县| 正定县| 磴口县| 安图县| 鲜城| 阿拉善右旗| 伊金霍洛旗| 思南县| 合江县| 武穴市| 靖安县| 澎湖县| 兴宁市| 莱西市| 西乌| 南陵县| 澄迈县| 宁安市| 谷城县| 财经| 威海市| 泸州市| 绵阳市| 天峻县| 宣武区| 拜泉县| 河曲县|