首先,需要把要用到的两个jar包下来,本例用的是jfreechart-1.0.10.jar,jcommon-1.0.13.jar。可以到该项目的官方网站上下载:http://www.jfree.org/
下面是jfreechart-1.0.10.jar包中org.jfree.chart.demo目录下的一个例子,看看他的效果,很不错哦!
以下是代码:
- package com.test.jfreechart;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.GradientPaint;
- import org.jfree.chart.ChartFactory;
- import org.jfree.chart.ChartPanel;
- 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.demo.BarChartDemo1;
- import org.jfree.chart.plot.CategoryPlot;
- import org.jfree.chart.plot.PlotOrientation;
- import org.jfree.chart.renderer.category.BarRenderer;
- import org.jfree.data.category.CategoryDataset;
- import org.jfree.data.category.DefaultCategoryDataset;
- import org.jfree.ui.ApplicationFrame;
- import org.jfree.ui.RefineryUtilities;
- public class BarChartDemo extends ApplicationFrame {
- /**
- * Creates a new demo instance.
- *
- * @param title
- * the frame title.
- */
- public BarChartDemo(String title) {
- super(title);
- CategoryDataset dataset = createDataset();
- JFreeChart chart = createChart(dataset);
- ChartPanel chartPanel = new ChartPanel(chart, false);
- chartPanel.setPreferredSize(new Dimension(500, 270));
- setContentPane(chartPanel);
- }
- /**
- * Returns a sample dataset.
- *
- * @return The dataset.
- */
- private static CategoryDataset createDataset() {
- // row keys...
- String series1 = "First";
- String series2 = "Second";
- String series3 = "Third";
- // column keys...
- String category1 = "Category 1";
- String category2 = "Category 2";
- String category3 = "Category 3";
- String category4 = "Category 4";
- String category5 = "Category 5";
- // create the dataset...
- DefaultCategoryDataset dataset = new DefaultCategoryDataset();
- dataset.addValue(1.0, series1, category1);
- dataset.addValue(4.0, series1, category2);
- dataset.addValue(3.0, series1, category3);
- dataset.addValue(5.0, series1, category4);
- dataset.addValue(5.0, series1, category5);
- dataset.addValue(5.0, series2, category1);
- dataset.addValue(7.0, series2, category2);
- dataset.addValue(6.0, series2, category3);
- dataset.addValue(8.0, series2, category4);
- dataset.addValue(4.0, series2, category5);
- dataset.addValue(4.0, series3, category1);
- dataset.addValue(3.0, series3, category2);
- dataset.addValue(2.0, series3, category3);
- dataset.addValue(3.0, series3, category4);
- dataset.addValue(6.0, series3, category5);
- return dataset;
- }
- /**
- * Creates a sample chart.
- *
- * @param dataset
- * the dataset.
- *
- * @return The chart.
- */
- private static JFreeChart createChart(CategoryDataset dataset) {
- // create the chart...
- JFreeChart chart = ChartFactory.createBarChart("Bar Chart Demo 1", // chart
- // title
- "Category", // domain axis label
- "Value", // range axis label
- dataset, // data
- PlotOrientation.VERTICAL, // orientation
- true, // include legend
- true, // tooltips?
- false // URLs?
- );
- // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
- // set the background color for the chart...
- chart.setBackgroundPaint(Color.white);
- // get a reference to the plot for further customisation...
- CategoryPlot plot = (CategoryPlot) chart.getPlot();
- plot.setBackgroundPaint(Color.lightGray);
- plot.setDomainGridlinePaint(Color.white);
- plot.setDomainGridlinesVisible(true);
- plot.setRangeGridlinePaint(Color.white);
- // ******************************************************************
- // More than 150 demo applications are included with the JFreeChart
- // Developer Guide...for more information, see:
- //
- // > http://www.object-refinery.com/jfreechart/guide.html
- //
- // ******************************************************************
- // set the range axis to display integers only...
- final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
- rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
- // disable bar outlines...
- BarRenderer renderer = (BarRenderer) plot.getRenderer();
- renderer.setDrawBarOutline(false);
- // set up gradient paints for series...
- GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f,
- 0.0f, new Color(0, 0, 64));
- GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f,
- 0.0f, new Color(0, 64, 0));
- GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f,
- 0.0f, new Color(64, 0, 0));
- renderer.setSeriesPaint(0, gp0);
- renderer.setSeriesPaint(1, gp1);
- renderer.setSeriesPaint(2, gp2);
- CategoryAxis domainAxis = plot.getDomainAxis();
- domainAxis.setCategoryLabelPositions(CategoryLabelPositions
- .createUpRotationLabelPositions(Math.PI / 6.0));
- // OPTIONAL CUSTOMISATION COMPLETED.
- return chart;
- }
- /**
- * Starting point for the demonstration application.
- *
- * @param args
- * ignored.
- */
- public static void main(String[] args) {
- BarChartDemo1 demo = new BarChartDemo1("Bar Chart Demo 1");
- demo.pack();
- RefineryUtilities.centerFrameOnScreen(demo);
- demo.setVisible(true);
- }
- }