ChartAction类
package chart;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class ChartAction extends Action {
private static final Class[] CONSTRUCTOR_PARAMS = new Class[] { HttpServletRequest.class,
HttpServletResponse.class };
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
String className = request.getParameter("chart");
AbstractChart chart = (AbstractChart) Class.forName(
"chart." + className).getConstructor(
CONSTRUCTOR_PARAMS).newInstance(new Object[] { request, response });
//如果类没有构造函数则直接.forName(类名)就可以了
chart.execute();
return null;
}
}
AbstractChart 类
package chart;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
public abstract class AbstractChart {
private HttpServletRequest request;
private PrintWriter pw;
public AbstractChart(HttpServletRequest request, HttpServletResponse response)
throws IOException {
this.request = request;
this.pw = response.getWriter();
}
public void execute() throws IOException {
String fileName;
try {
fileName = executeInternal(request);
} catch (Exception e) {
return;
}
ChartRenderingInfo info = getChartRenderingInfo();
String usemap = "";
if (info != null) {
ChartUtilities.writeImageMap(pw, fileName, info, false);
usemap = " usemap=\"#" + fileName + "\"";
}
pw.println("<img src=\"" + request.getContextPath() + "/DisplayChart?filename=" + fileName
+ "\"" + usemap + "\"/>");
}
protected abstract String executeInternal(HttpServletRequest request) throws IOException;
protected ChartRenderingInfo getChartRenderingInfo() {
return null;
}
}
SSBChart extends AbstractChart
package chart;
import java.awt.Color;
import java.awt.Font;
import java.awt.RenderingHints;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.category.DefaultCategoryDataset;
public class SSBChart extends AbstractChart {
public SSBChart(HttpServletRequest request, HttpServletResponse response) throws IOException {
super(request, response);
}
protected String executeInternal(HttpServletRequest request) throws IOException {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
//jsp include 进去的页面共享一个request
List data = (List) request.getAttribute("tableList");
int len = data.size();
for (int i = len - 1; i >= 0; i--) {
Map elem = (Map) data.get(i);
dataset.addValue((Number) elem.get("SSB"), "生师比", (String) elem.get("XN"));
}
JFreeChart chart = ChartFactory.createBarChart("历学年生师比", "学年", "生师比", dataset,
PlotOrientation.VERTICAL, true, true, true);
chart.setBackgroundPaint(Color.WHITE);
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
chart.getTitle().setFont(new Font("serif", Font.TRUETYPE_FONT, 14));
CategoryPlot plot = chart.getCategoryPlot();
BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
renderer.setMaximumBarWidth(0.1);
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible(true);
plot.getRangeAxis().setUpperMargin(0.15d);
String fileName = ServletUtilities.saveChartAsPNG(chart, 600, 250, request.getSession());
return fileName;
}
}
分享到:
相关推荐
### JFreeChart 柱图实现详解 #### 引言 在数据分析与展示领域,柱状图(Bar Chart)是一种非常常见的数据可视化工具,它能够直观地比较不同类别的数值大小,尤其适用于显示离散数据集。JFreeChart作为Java平台上...
在这个项目中,我们将深入探讨如何使用JFreeChart来实现这些基本的图表类型。 首先,我们来看柱状图(Bar Chart)。柱状图是一种常用的数据可视化方式,它通过长条的高度来表示数据的大小。在JFreeChart中,我们...
- "jfreecharss"和"jfreechar"可能是包含JFreeChart示例代码或资源的文件。分析这些文件可以帮助理解如何在实际项目中使用JFreeChart。 综上所述,JFreeChart是一个强大的Java图表库,能够方便地生成各种图表,...
**JFreeChart 学习指南** JFreeChart 是一个用于Java平台的开源图表库,它提供了丰富的图表类型,包括柱状图、饼图、线形图、散点图、甘特图等,使得开发者能够方便地在应用程序中生成高质量的可视化数据。...
**JFreeChart简介** JFreeChart是一个开源的Java库,用于...这个"JFreechar报表一个简单例子"是学习和理解JFreeChart的一个良好起点,通过深入研究和实践,你将能够熟练地利用JFreeChart创建各种复杂的图表和报表。
**JFreeChart 教程** JFreeChart 是一个流行的开源Java库,用于生成高质量的图表。这个库广泛应用于各种Java应用程序中,包括Web应用、桌面应用以及报告和数据分析工具。JFreeChart 支持多种图表类型,如饼图、柱状...
在本篇内容中,我们将深入探讨如何利用JFreeChart库来实现曲线图,并通过实例来展示其基本用法。 首先,我们需要了解JFreeChart的基本结构。JFreeChart的核心是`ChartFactory`类,它提供了创建各种图表的静态工厂...
这个压缩包“JfreeChar完整的例子”包含了使用JFreeChart创建图表的详细示例,既有在Web环境下运行的例子,也有通过main方法直接执行的Java应用。 首先,我们来了解一下JFreeChart的基本使用。在Java程序中,你可以...
在这里我们使用了`DefaultCategoryDataset`类,它是`CategoryDataset`接口的一个实现。 - **参数详解**:每个`setValue`调用代表添加一条数据,前两个参数分别是数值和类别名称,第三个参数为系列名称,在这里所有...
jfreechar 整合struts2.1.8版本生成线图,饼图,柱形图 直接导入eclipse 或myeclipse 即可运行,里面含有lib ,及运行详细说 如:<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts ...
数据集则可以使用`CategoryDataset`接口的实现,如`DefaultCategoryDataset`。这个数据集包含一系列列和行,每行代表一个类别,每列对应一个值。 线图创建则调用`createXYLineChart()`,它需要`XYDataset`,这是一...
JFreeChar 动态曲线图,定时刷新,带节点事件
JFreeChar 动态横向柱状图,带纵向滚动条,可根据数据自动计算滚动条长度,可自定义系统柱子颜色,定时刷新
jfreechar最新jar包 JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面: pie charts (2D and 3D):饼图(平面和立体) bar charts (regular and stacked, with ...
public class ChartExample { public static void main(String[] args) { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Series 1", "Category 1"); dataset.add...
在`jfreechar.txt`文件中,可能包含了创建不同图表的Java代码示例。例如,创建一个简单的柱状图可能如下所示: ```java CategoryDataset dataset = createSampleData(); JFreeChart chart = ChartFactory....
JFreeChart它主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
总结,JFreeChart 1.0.17 提供了全面的图形绘制功能,配合中文 API 文档,使得 Java 开发者能够更加便捷地实现数据可视化,为项目增色添彩。无论你是初学者还是经验丰富的开发者,都能从中受益。
饼状图用于显示部分与整体的关系,JFreeChart中的`PieChart`类可以轻松实现。每个扇区代表数据的一个类别,其大小表示该类别的相对比例。你可以通过`PieDataset`来组织数据,其中每个键值对代表一个扇区。`PiePlot`...