Posted on 2007-10-16 16:25
詩(shī)特林 閱讀(6299)
評(píng)論(6) 編輯 收藏 所屬分類:
Java
在Eclipse RCP中開發(fā)JFreeChart示例
RCP,就是Rich Client Platform的縮寫,即富客戶平臺(tái),是Eclipse進(jìn)化的產(chǎn)物(自3.0版以后出現(xiàn)),是Eclipse組織向用戶提供的強(qiáng)大的開放性開發(fā)平臺(tái),能夠使用戶方便地創(chuàng)建自己的基于Eclipse的應(yīng)用程序,并且這些應(yīng)用程序能夠得到Eclipse的底層支持。更重要的是,我們可以利用Java創(chuàng)建象Eclipse這么漂亮的桌面程序。
有人說,
RCP一定會(huì)變得非常流行。因?yàn)?strong style="color: black; background-color: #a0ffff">RCP,可以開發(fā)界面象Eclipse這樣漂亮的桌面程序。那就來做一個(gè)JFreeChat的示例吧。
一、下載JFreeChart包
1.
http://www.jfree.org/jfreechart/
2.用到的包:(注,我的開發(fā)環(huán)境是eclipse3.2)
jcommon-1.0.10.jar
jfreechart-1.0.6.jar
jfreechart-1.0.6-experimental.jar
jfreechart-1.0.6-swt.jar
swtgraphics2d.jar
二、新建項(xiàng)目
在Eclipse下如何建立plug-in的內(nèi)容在Google上一搜一大把,有些人會(huì)覺得乏味,但是沒關(guān)系,這只是一個(gè)快速的起步。下面大致說一下。有不明白的,可以參考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ì)說找不相關(guān)的類,如下圖

三、建立View
建View在上面文檔http://www.vogella.de/articles/RichClientPlatform/article.html#using_jars中5.2. Add a view to your application有講,我在這里大致上幾個(gè)圖說明一下。
1.點(diǎn)擊配置文件的“extensions”,選擇"org.eclipse.views",右鍵,》"new"》"view",

2.點(diǎn)擊右邊class*.;鏈接,來創(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

true, false);



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

plot.setSectionOutlinesVisible(false);

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

plot.setNoDataMessage("沒有統(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