在RCP View中顯示JFreeChart報表完成的代碼

下面是經過我調試過的代碼,只要在你的Plug-in project中新建一個ViewPart 複製粘貼即可。


package com.rcp.jfreechart.app.view;



import java.awt.Color;
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.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.experimental.chart.swt.ChartComposite;


public class JFreeChartView extends ViewPart {


public static final String ID = "com.rcp.jfreechart.app.view.JFreeChartView";


public JFreeChartView() {
}


public static CategoryDataset createDataset() {


// row keys...
String series1 = "Success";
String series2 = "Fail";


// column keys...
String category1 = "Category 1";
String category2 = "Category 2";
String category3 = "Category 3";
String category4 = "Category 4";
String category5 = "Category 5";
String category6 = "Category 6";
String category7 = "Category 7";
String category8 = "Category 8";
String category9 = "Category 9";
String category10 = "Category 10";
String category11 = "Category 11";
String category12 = "Category 12";
String category13 = "Category 13";


// create the dataset...
DefaultCategoryDataset dataset = new DefaultCategoryDataset();


dataset.addValue(31.0, series1, category1);
dataset.addValue(64.0, series1, category2);
dataset.addValue(33.0, series1, category3);
dataset.addValue(75.0, series1, category4);
dataset.addValue(25.0, series1, category5);
dataset.addValue(35.0, series1, category6);
dataset.addValue(85.0, series1, category7);
dataset.addValue(35.0, series1, category8);
dataset.addValue(55.0, series1, category9);
dataset.addValue(35.0, series1, category10);
dataset.addValue(65.0, series1, category11);
dataset.addValue(45.0, series1, category12);
dataset.addValue(75.0, series1, category13);


dataset.addValue(55.0, series2, category1);
dataset.addValue(67.0, series2, category2);
dataset.addValue(86.0, series2, category3);
dataset.addValue(28.0, series2, category4);
dataset.addValue(94.0, series2, category5);
dataset.addValue(64.0, series2, category6);
dataset.addValue(74.0, series2, category7);
dataset.addValue(54.0, series2, category8);
dataset.addValue(34.0, series2, category9);
dataset.addValue(84.0, series2, category10);
dataset.addValue(94.0, series2, category11);
dataset.addValue(14.0, series2, category12);
dataset.addValue(54.0, series2, category13);


return dataset;


}


private static JFreeChart createChart(CategoryDataset dataset) {


JFreeChart chart = ChartFactory.createBarChart("報表", "類別", "數值", dataset, PlotOrientation.VERTICAL, true, true, false);

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

plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinePaint(Color.white);

// set the range axis to display integers only...
final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
rangeAxis.setVisible(true);
rangeAxis.setTickLabelPaint(Color.BLACK);
plot.setRangeAxis(rangeAxis);

CategoryAxis domainAxis = plot.getDomainAxis();
plot.setDomainAxis(domainAxis);


// Lable(Math.PI/6.0)度傾斜 
domainAxis.setCategoryLabelPositions(CategoryLabelPositions .createUpRotationLabelPositions(Math.PI / 6.0)); 

// ValueAxis rangeAxis = plot.getRangeAxis();
// //設置最高的一個 Item 與圖片頂端的距離
// rangeAxis.setUpperMargin(0.15);
// //設置最低的一個 Item 與圖片底端的距離
// rangeAxis.setLowerMargin(0.15);
// plot.setRangeAxis(rangeAxis);  //應用我們的設置

// disable bar outlines...
BarRenderer3D renderer = new BarRenderer3D();
renderer.setSeriesPaint(0, new Color(0, 255, 0));
renderer.setSeriesPaint(1, new Color(255, 0, 0));
renderer.setSeriesPaint(2, Color.BLUE);
renderer.setItemMargin(0.1);//設置每個地區所包含的平行柱的之間距離
renderer.setItemMargin(0.01);  //設置組內柱子之間的距離

//顯示每個柱的數值,並修改該數值的字體屬性
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelFont(new Font("黑體",Font.PLAIN,9));
renderer.setBaseItemLabelsVisible(true);

plot.setRenderer(renderer);  //應用我們的設置

return chart;
}


@SuppressWarnings("unused")
public void createPartControl(Composite parent) {
JFreeChart chart = createChart(createDataset());
final ChartComposite frame = new ChartComposite(parent, SWT.NONE, chart, true);
}


public void setFocus() {


}

}


如果不能運行的請看另外一篇文章,也就是一些配置工作。


發佈了39 篇原創文章 · 獲贊 3 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章