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 name="default" namespace="" extends="jfreechart-default">
<action name="lineChart" class="com.action.LineChartAction">
<result type="chart">
<param name="width">500</param>
<param name="height">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();
}
}
}
}
分享到:
相关推荐
JFreeChart_API_1.0.14 , 为了能有个良好的工具辅助开发,我特意制作的JFreeChart的帮助文档,希望能给大家带来帮助。
《JFreeChart 1.0.14 源码解析与应用探索》 JFreeChart 是一个广泛使用的 Java 图表库,它为开发者提供了创建各种高质量图表的能力,包括饼图、柱状图、线图、散点图、甘特图等。在1.0.14版本中,其提供的`...
《JFreeChart 1.0.14:创建专业图表的利器》 JFreeChart 是一个流行的开源 Java 图形库,用于生成高质量的图表。在提供的 "jfreechart-1.0.14.zip" 压缩包中,包含了 JFreeChart 的 1.0.14 版本及其演示程序,这为...
jfreechart-1.0.14 API手册 .
JFreeChart可以方便地与JavaFX、Swing等Java GUI库结合使用,也可以在Web应用中通过Servlets或JSP生成图表。此外,它还可以与数据库、CSV、XML等数据源结合,实现数据的动态更新和展示。 6. **版本更新与社区支持*...
官网jfreechart-1.0.14-javadocs.zip处理得到的.chm文件格式api。
"struts2-jfreechart-plugin-2.1.6.jar.zip_jfreechart struts2_jfree" 这个标题表明这是一个关于Struts2与JFreeChart结合使用的插件,版本为2.1.6。这个插件简化了在Struts2应用中使用JFreeChart的过程,使得开发者...
3. **图表类型与渲染器** - `SlidingCategoryDatasetDemoBar.java`和`SlidingCategoryDatasetDemoLine.java`可能展示了滑动类别数据集的条形图和线形图示例。 - `BarRendererEx.java`可能是对默认`BarRenderer`的...
整合Struts2与JFreeChart的过程主要包括以下步骤: 1. **引入依赖**:在项目的类路径中添加JFreeChart和Struts2的jar文件。如果你使用的是Maven,可以在pom.xml文件中添加对应的依赖项。 2. **创建图表**:在Java...
Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建可维护性和可扩展性极高的Web应用程序,而JFreeChart则是一个用于生成高质量图表的Java类库。下面将详细介绍这两个库的整合以及如何创建饼状图、柱状...
在将Struts2与JFreeChart整合的过程中,主要涉及以下几个关键知识点: 1. **Struts2架构理解**:Struts2框架提供了Action、Interceptor(拦截器)、Result和ValueStack等核心概念,帮助开发者实现业务逻辑和视图的...
JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications,...JFreeChart可生成饼图、柱状图、散点图、时序图、甘特图等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。
struts2-jfreechart-plugin-2.1.8.1.jar
总的来说,Struts2与JFreeChart的结合提供了在Java Web应用中生成动态图表的能力,帮助开发者将复杂的数据以直观的方式呈现给用户,从而增强用户体验和决策分析能力。通过合理的代码组织和API利用,可以实现高效且...
struts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jar
3. **兼容性**:JFreeChart 可以在 Java SE 和 Java EE 环境下运行,与 Swing、AWT、JavaServer Faces (JSF) 和 Servlets 等技术无缝集成。 4. **动态更新**:可以实时更新图表,适应动态数据变化,如股票价格、...
最后,将数据源与图表类型结合,生成最终的JFreeChart对象,并使用ChartFrame将其显示出来。 在实际项目中,JFreeChart可以与其他Java框架集成,比如Swing或JavaFX,用于创建桌面应用的图形界面;也可以配合Servlet...
jfreechart-1.0.14-swt.jar
总的来说,整合Struts2和JFreeChart能够方便地在Web应用中生成动态图表报表,使数据可视化,提升用户体验。通过以上步骤,你可以创建一个基本的报表系统,根据实际需求,还可以进一步优化,如增加参数化查询、导出...
jfreechart-1.0.14-experimental.jar