Struts2 与 JfreeChart_1.0.14 图表

来源:转载

Struts2 与 JfreeChart_1.0.14 图表

1.先加入相关依赖包jcommon-1.0.17.jar
jfreechart-1.0.14.jar
struts2-jfreechart-plugin-2.1.8.1.jar
iText-2.1.5.jar //为生成PDF
poi-2.5.1.jar //为生成XLS 2.创建图片import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Rectangle;
import java.util.Random;import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.Axis;
import org.jfree.chart.block.BlockBorder;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.LegendTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.RectangleEdge;
import org.jfree.ui.TextAnchor;public class ChartUtil2 { private static final Font PLOT_FONT = new Font("宋体", Font.BOLD, 15); /**
* 创建数据集合
*
* @return CategoryDataset对象
*/
public static CategoryDataset createDataSet() {
// 图例名称
String[] line = { "杀毒软件一", "杀毒软件二" };
// 类别
String[] category = { "2004年", "2005年", "2006年", "2007年", "2008年" };
Random random = new Random(); // 实例化Random对象
// 实例化DefaultCategoryDataset对象
DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
// 使用循环向数据集合中添加数据
for (int i = 0; i < line.length; i++) {
for (int j = 0; j < category.length; j++) {
dataSet.addValue(100000 + random.nextInt(100000), line[i],
category[j]);
}
}
return dataSet;
} /**
* 生成制图对象
*
* @param is3D
* 是否为3D效果
* @return JFreeChart对象
*/
public static JFreeChart createChart(boolean is3D) {
JFreeChart chart = null;
if (is3D) {
chart = ChartFactory.createLineChart3D("2004-2008年优秀杀毒软件杀毒数量统计", // 图表标题
"杀毒软件", // X轴标题
"查杀病毒数量",// Y轴标题
createDataSet(),// 绘图数据集
PlotOrientation.VERTICAL,// 绘制方向
true,// 显示图例
true,// 采用标准生成器
false// 是否生成超链接
);
} else {
chart = ChartFactory.createLineChart("2004-2008年优秀杀毒软件杀毒数量统计", // 图表标题
"杀毒软件", // X轴标题
"查杀病毒数量", // Y轴标题
createDataSet(), // 绘图数据集
PlotOrientation.VERTICAL, // 绘制方向
true, // 是否显示图例
true, // 是否采用标准生成器
false // 是否生成超链接
);
}
chart.getTitle().setFont(new Font("隶书", Font.BOLD, 23)); // 设置标题字体
chart.getTitle().setPaint(Color.WHITE);
chart.setBackgroundPaint(new Color(1, 6, 98)); // 设置背景色 //图例区
LegendTitle legendTitle = chart.getLegend(); // 获得图例
legendTitle.setItemFont(new Font("宋体", Font.BOLD, 15)); // 设置图例类别字体
legendTitle.setBackgroundPaint(new Color(1, 6, 98)); //背景颜色
legendTitle.setFrame(BlockBorder.NONE); //不要边框
legendTitle.setItemPaint(Color.WHITE); //字体颜色
legendTitle.setPosition(RectangleEdge.RIGHT); //设置图例显示位置 //绘图区
CategoryPlot plot = chart.getCategoryPlot(); // 获取绘图区对象
plot.getDomainAxis().setTickLabelPaint(Color.WHITE); //坐标轴标尺值颜色
plot.getDomainAxis().setTickMarkPaint(new Color(45,157,248)); //坐标轴标尺值颜色
plot.getDomainAxis().setLabelPaint(new Color(45,157,248)); //分类标签的字体颜色
plot.getDomainAxis().setAxisLinePaint(new Color(45,157,248)); // 坐标轴线条颜色
BasicStroke realLine2 = new BasicStroke(2f); // 设置实线
plot.getDomainAxis().setTickMarkStroke(realLine2); //坐标轴标尺笔触
plot.getDomainAxis().setAxisLineStroke(realLine2);
plot.getDomainAxis().setLabelFont(PLOT_FONT);// 设置横轴字体
plot.getDomainAxis().setTickLabelFont(PLOT_FONT);// 设置坐标轴标尺值字体 plot.getRangeAxis().setLabelFont(PLOT_FONT);// 设置纵轴字体
plot.getRangeAxis().setTickLabelPaint(Color.WHITE); //坐标轴标尺值颜色
plot.getRangeAxis().setTickMarkPaint(new Color(45,157,248)); //坐标轴标尺值颜色
plot.getRangeAxis().setLabelPaint(new Color(45,157,248));
plot.getRangeAxis().setAxisLinePaint(new Color(45,157,248)); // 坐标轴线条颜色
plot.getRangeAxis().setTickMarkStroke(realLine2); //坐标轴标尺笔触
plot.getRangeAxis().setAxisLineStroke(realLine2);
plot.setBackgroundPaint(new Color(1, 6, 98));// 设置绘图区背景色
plot.setRangeGridlinePaint(new Color(29,105,195));// 设置水平方向背景线颜色
plot.setRangeGridlineStroke(realLine2);
plot.setRangeGridlinesVisible(true);// 设置是否显示水平方向背景线,默认值为true
plot.setDomainGridlinePaint(Color.RED);// 设置垂直方向背景线颜色
plot.setDomainGridlinesVisible(false);// 设置是否显示垂直方向背景线,默认值为false
plot.setNoDataMessage( " 找不到可用数据 " );
//折线对象区
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer(); // 获取折线对象 renderer.setUseOutlinePaint(true); //是否显示数据点轮廓
renderer.setBaseOutlinePaint(Color.WHITE); //设置数据点轮廓颜色
renderer.setBaseOutlineStroke(realLine2); // 笔触 renderer.setBaseShapesVisible(true); //是否显示图形的形状 renderer.setSeriesPaint(0,new Color(6,188,22)); //指定分类图形的颜色
renderer.setSeriesPaint(1,new Color(242,181,32)); renderer.setSeriesShape(0,new Rectangle(-5,-5,10,10)); //指定分类图形的形状
renderer.setSeriesShape(1,new Rectangle(-5,-5,10,10));
//renderer.setSeriesShape(2,ShapeUtilities.createTranslatedShape()); BasicStroke realLine = new BasicStroke(5f); // 设置实线
float dashes[] = { 8.0f }; // 定义虚线数组
BasicStroke brokenLine = new BasicStroke(5f, // 线条粗细
BasicStroke.CAP_SQUARE, // 端点风格
BasicStroke.JOIN_MITER, // 折点风格
8.f, // 折点处理办法
dashes, // 虚线数组
0.0f); // 虚线偏移量
renderer.setSeriesStroke(0, realLine);// 利用虚线绘制
renderer.setSeriesStroke(1, realLine);// 利用虚线绘制
//renderer.setSeriesStroke(2, brokenLine);// 利用实线绘制 return chart;
}
public static void main(String args[])
{
ChartUtil2 chartUtil = new ChartUtil2();
ChartFrame frame = new ChartFrame("First", chartUtil.createChart(false));
frame.pack();
frame.setVisible(true);
}} 3.struts2 调用,展示图表import org.jfree.chart.JFreeChart;import com.action.util.ChartUtil;
import com.opensymphony.xwork2.ActionSupport;public class LineChartAction extends ActionSupport { /**
*
*/
private static final long serialVersionUID = -3626091249067573096L; public JFreeChart getChart() { return ChartUtil.createChart(false); }} 4.struts.xml 配置注意修改struts-default 为 jfreechart-default。如下:<package namespace="" extends="jfreechart-default"> <action >
<result type="chart">
<param>500</param>
<param>400</param>
</result>
</action> </package> 5.下载图表import java.io.BufferedOutputStream;
import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;import com.action.util.ChartUtil;public class DownLoadChartServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = -6261312275846793536L; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletOutputStream outStream = response.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(outStream);
try{
// 设置响应类型及响应头
response.setContentType("application/x-msdownload");
response.addHeader("Content-Disposition", "attachment; filename=/""
+ "testChart.jpg" + "/"");
JFreeChart freeChart = ChartUtil.createChart(false);
ChartUtilities.writeChartAsJPEG(bos, freeChart, 800, 600); //输出图表为jpg
bos.flush();
}finally {
if(outStream != null) {
outStream.close();
}
if(bos != null) {
bos.close();
}
}
}}



分享给朋友:
您可能感兴趣的文章:
随机阅读: