1.开发JfreeChart需要Jcommon,而这两个文件下载下来后是没有javadoc文档的,需要ant工具来执行压缩包中ant目录下的文件。
首先下载ant,然后安装。
To get up and running with the binary edition of Ant quickly, follow these steps:
- 1.Make sure you have a Java environment installed, See System Requirements for details.
- 2.Download Ant. See Binary Edition for details.
- 3.Uncompress the downloaded file into a directory.
- 4.Set environmental variables
JAVA_HOME
to your Java environment,ANT_HOME
to the directory you uncompressed Ant to, and add${ANT_HOME}/bin
(Unix) or%ANT_HOME%/bin
(Windows) to yourPATH
. See Setup for details. - 5.Optionally, from the
ANT_HOME
directory runant -f fetch.xml -Ddest=system
to get the library dependencies of most of the Ant tasks that require them. If you don't do this, many of the dependent Ant tasks will not be available. See Optional Tasks for details and other options for the -Ddest parameter. - 6.Optionally, add any desired Antlibs. See Ant Libraries for a list.
安装好ant后,用命令提示符到jfreechart-1.0.13/ant目录,输入“ant javadoc”,ant就会自动执行操作将javadoc添加到jfreechart-1.0.13目录中,jcommon也是同样操作。
2.struts整合jfreechart。
package myapp.actions;
import org.apache.commons.lang.xwork.math.RandomUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import com.opensymphony.xwork2.ActionSupport;
public class ViewModerationChartAction extends ActionSupport {
private JFreeChart chart;
public String execute() throws Exception {
// chart creation logic...
XYSeries dataSeries = new XYSeries(new Integer(1)); //pass a key for this serie
for (int i = 0; i <= 100; i++) {
dataSeries.add(i, RandomUtils.nextInt());
}
XYSeriesCollection xyDataset = new XYSeriesCollection(dataSeries);
ValueAxis xAxis = new NumberAxis("Raw Marks");
ValueAxis yAxis = new NumberAxis("Moderated Marks");
// set my chart variable
chart =
new JFreeChart(
"Moderation Function",
JFreeChart.DEFAULT_TITLE_FONT,
new XYPlot(
xyDataset,
xAxis,
yAxis,
new StandardXYItemRenderer(StandardXYItemRenderer.LINES)),
false);
chart.setBackgroundPaint(java.awt.Color.white);
return super.SUCCESS;
}
public JFreeChart getChart() {
return chart;
}
}
struts.xml文件配置:
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
">
400
300
引入jar包jfreechart-1.0.13.jar、jcommon-1.0.13.jar、struts2-jfreechart-plugin-2.2.1.jar。
在tomcat中部署,输入地址
http://localhost:8080/TestJfreeChart/viewModerationChart.action,显示结果如下整合中文乱码问题
package com.test.jfreechart;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
public class JFreeChartTest {
public static void main(String[] args) {
DefaultPieDataset dpd = new DefaultPieDataset();
dpd.setValue("管理人员", 25);
dpd.setValue("市场人员", 25);
dpd.setValue("开发人员", 45);
dpd.setValue("其他人员", 10);
JFreeChart chart = ChartFactory.createPieChart3D("某公司人员组织结构图", dpd,
true, true, false); // 图表标题 、数据 、是否显示图例 、是否显示工具提示 、是否生成URL
chart.setTitle(new TextTitle("某公司人员组织结构图-3D", new Font("黑体",
Font.ITALIC, 22))); // 重新设置图表标题,改变字体。如图:
LegendTitle legend = chart.getLegend(0); // 取得统计图表的第一个图例
legend.setItemFont(new Font("宋体", Font.BOLD, 14)); // 修改图例的字体,如图
Font font = new Font("宋体", 10, 20);
PiePlot plot = (PiePlot) chart.getPlot(); // 获得饼图的Plot对象
plot.setLabelFont(new Font("隶属", Font.BOLD, 18)); // 设置饼图各部分的标签字体,如图
plot.setBackgroundAlpha(0.9f); // 设置透明度(0-1.0之间)
ChartFrame chartFrame = new ChartFrame("某公司人员组织结构图", chart);
chartFrame.pack();
chartFrame.setVisible(true);
}
}