`

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 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_API_1.0.14 , 为了能有个良好的工具辅助开发,我特意制作的JFreeChart的帮助文档,希望能给大家带来帮助。

    jfreechart-1.0.14-demo.jar 对应的源码

    《JFreeChart 1.0.14 源码解析与应用探索》 JFreeChart 是一个广泛使用的 Java 图表库,它为开发者提供了创建各种高质量图表的能力,包括饼图、柱状图、线图、散点图、甘特图等。在1.0.14版本中,其提供的`...

    jfreechart-1.0.14.zip(含demo)

    《JFreeChart 1.0.14:创建专业图表的利器》 JFreeChart 是一个流行的开源 Java 图形库,用于生成高质量的图表。在提供的 "jfreechart-1.0.14.zip" 压缩包中,包含了 JFreeChart 的 1.0.14 版本及其演示程序,这为...

    jfreechart-1.0.14 API手册

    jfreechart-1.0.14 API手册 .

    jfreechart-1.0.14.rarjar包

    JFreeChart可以方便地与JavaFX、Swing等Java GUI库结合使用,也可以在Web应用中通过Servlets或JSP生成图表。此外,它还可以与数据库、CSV、XML等数据源结合,实现数据的动态更新和展示。 6. **版本更新与社区支持*...

    jfreechart-1.0.14 api

    官网jfreechart-1.0.14-javadocs.zip处理得到的.chm文件格式api。

    struts2-jfreechart-plugin-2.1.6.jar.zip_jfreechart struts2_jfree

    "struts2-jfreechart-plugin-2.1.6.jar.zip_jfreechart struts2_jfree" 这个标题表明这是一个关于Struts2与JFreeChart结合使用的插件,版本为2.1.6。这个插件简化了在Struts2应用中使用JFreeChart的过程,使得开发者...

    JFreeChart_GUI_Demo

    3. **图表类型与渲染器** - `SlidingCategoryDatasetDemoBar.java`和`SlidingCategoryDatasetDemoLine.java`可能展示了滑动类别数据集的条形图和线形图示例。 - `BarRendererEx.java`可能是对默认`BarRenderer`的...

    Struts2整合JFreeChart 实现柱状图表

    整合Struts2与JFreeChart的过程主要包括以下步骤: 1. **引入依赖**:在项目的类路径中添加JFreeChart和Struts2的jar文件。如果你使用的是Maven,可以在pom.xml文件中添加对应的依赖项。 2. **创建图表**:在Java...

    struts2+jfreechart

    Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建可维护性和可扩展性极高的Web应用程序,而JFreeChart则是一个用于生成高质量图表的Java类库。下面将详细介绍这两个库的整合以及如何创建饼状图、柱状...

    struts2与jfreechart整合

    在将Struts2与JFreeChart整合的过程中,主要涉及以下几个关键知识点: 1. **Struts2架构理解**:Struts2框架提供了Action、Interceptor(拦截器)、Result和ValueStack等核心概念,帮助开发者实现业务逻辑和视图的...

    jfreechart-1.0.14.jar

    JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications,...JFreeChart可生成饼图、柱状图、散点图、时序图、甘特图等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。

    struts2-jfreechart-plugin-2.1.8.1.jar

    struts2-jfreechart-plugin-2.1.8.1.jar

    Struts2与Jfreechart结合产生报表统计图

    总的来说,Struts2与JFreeChart的结合提供了在Java Web应用中生成动态图表的能力,帮助开发者将复杂的数据以直观的方式呈现给用户,从而增强用户体验和决策分析能力。通过合理的代码组织和API利用,可以实现高效且...

    struts2-jfreechart-plugin-2.0.11.jar

    struts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jar

    JFreeChart -- web图表生成源码.zip_JfreeChart web_java web_jfreechart_w

    3. **兼容性**:JFreeChart 可以在 Java SE 和 Java EE 环境下运行,与 Swing、AWT、JavaServer Faces (JSF) 和 Servlets 等技术无缝集成。 4. **动态更新**:可以实时更新图表,适应动态数据变化,如股票价格、...

    jfreechart-1.0.14.rar

    最后,将数据源与图表类型结合,生成最终的JFreeChart对象,并使用ChartFrame将其显示出来。 在实际项目中,JFreeChart可以与其他Java框架集成,比如Swing或JavaFX,用于创建桌面应用的图形界面;也可以配合Servlet...

    jfreechart-1.0.14-swt.jar

    jfreechart-1.0.14-swt.jar

    struts2整合 jfreechart 实现报表

    总的来说,整合Struts2和JFreeChart能够方便地在Web应用中生成动态图表报表,使数据可视化,提升用户体验。通过以上步骤,你可以创建一个基本的报表系统,根据实际需求,还可以进一步优化,如增加参数化查询、导出...

    jfreechart-1.0.14-experimental.jar

    jfreechart-1.0.14-experimental.jar

Global site tag (gtag.js) - Google Analytics