`
huang552
  • 浏览: 103747 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Abstract class 实现JFreeChar

阅读更多
  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;

	}
}

 

分享到:
评论

相关推荐

    JFreeChar 柱图实现

    ### JFreeChart 柱图实现详解 #### 引言 在数据分析与展示领域,柱状图(Bar Chart)是一种非常常见的数据可视化工具,它能够直观地比较不同类别的数值大小,尤其适用于显示离散数据集。JFreeChart作为Java平台上...

    使用JFreeChar简单实现图表

    在这个项目中,我们将深入探讨如何使用JFreeChart来实现这些基本的图表类型。 首先,我们来看柱状图(Bar Chart)。柱状图是一种常用的数据可视化方式,它通过长条的高度来表示数据的大小。在JFreeChart中,我们...

    jfreechar 实现生成柱状图,饼图,曲线,

    - "jfreecharss"和"jfreechar"可能是包含JFreeChart示例代码或资源的文件。分析这些文件可以帮助理解如何在实际项目中使用JFreeChart。 综上所述,JFreeChart是一个强大的Java图表库,能够方便地生成各种图表,...

    JfreeChar学习资料 JfreeChar学习资料

    **JFreeChart 学习指南** JFreeChart 是一个用于Java平台的开源图表库,它提供了丰富的图表类型,包括柱状图、饼图、线形图、散点图、甘特图等,使得开发者能够方便地在应用程序中生成高质量的可视化数据。...

    JFreechar简单报表例子

    **JFreeChart简介** JFreeChart是一个开源的Java库,用于...这个"JFreechar报表一个简单例子"是学习和理解JFreeChart的一个良好起点,通过深入研究和实践,你将能够熟练地利用JFreeChart创建各种复杂的图表和报表。

    jfreechar教程

    **JFreeChart 教程** JFreeChart 是一个流行的开源Java库,用于生成高质量的图表。这个库广泛应用于各种Java应用程序中,包括Web应用、桌面应用以及报告和数据分析工具。JFreeChart 支持多种图表类型,如饼图、柱状...

    JFreeChar实现曲线图:lib+Demo

    在本篇内容中,我们将深入探讨如何利用JFreeChart库来实现曲线图,并通过实例来展示其基本用法。 首先,我们需要了解JFreeChart的基本结构。JFreeChart的核心是`ChartFactory`类,它提供了创建各种图表的静态工厂...

    jfreechar完整的例子

    这个压缩包“JfreeChar完整的例子”包含了使用JFreeChart创建图表的详细示例,既有在Web环境下运行的例子,也有通过main方法直接执行的Java应用。 首先,我们来了解一下JFreeChart的基本使用。在Java程序中,你可以...

    jfreechar饼图简单示例

    在这里我们使用了`DefaultCategoryDataset`类,它是`CategoryDataset`接口的一个实现。 - **参数详解**:每个`setValue`调用代表添加一条数据,前两个参数分别是数值和类别名称,第三个参数为系列名称,在这里所有...

    jfreechar 整合struts2.1.8版本生成线图,饼图,柱形图

    jfreechar 整合struts2.1.8版本生成线图,饼图,柱形图 直接导入eclipse 或myeclipse 即可运行,里面含有lib ,及运行详细说 如:&lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts ...

    JfreeChar教程与实例

    数据集则可以使用`CategoryDataset`接口的实现,如`DefaultCategoryDataset`。这个数据集包含一系列列和行,每行代表一个类别,每列对应一个值。 线图创建则调用`createXYLineChart()`,它需要`XYDataset`,这是一...

    JFreeChar 动态曲线图

    JFreeChar 动态曲线图,定时刷新,带节点事件

    JFreeChar 动态横向柱状图

    JFreeChar 动态横向柱状图,带纵向滚动条,可根据数据自动计算滚动条长度,可自定义系统柱子颜色,定时刷新

    jfreechar最新jar包

    jfreechar最新jar包 JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面: pie charts (2D and 3D):饼图(平面和立体) bar charts (regular and stacked, with ...

    jfreechar统计表生成插件

    public class ChartExample { public static void main(String[] args) { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Series 1", "Category 1"); dataset.add...

    jfreechar各种图

    在`jfreechar.txt`文件中,可能包含了创建不同图表的Java代码示例。例如,创建一个简单的柱状图可能如下所示: ```java CategoryDataset dataset = createSampleData(); JFreeChart chart = ChartFactory....

    jfreecharAPI

    JFreeChart它主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。

    jFreeChar-1.0.17含中文api

    总结,JFreeChart 1.0.17 提供了全面的图形绘制功能,配合中文 API 文档,使得 Java 开发者能够更加便捷地实现数据可视化,为项目增色添彩。无论你是初学者还是经验丰富的开发者,都能从中受益。

    JFreeChar做各种图表

    饼状图用于显示部分与整体的关系,JFreeChart中的`PieChart`类可以轻松实现。每个扇区代表数据的一个类别,其大小表示该类别的相对比例。你可以通过`PieDataset`来组织数据,其中每个键值对代表一个扇区。`PiePlot`...

Global site tag (gtag.js) - Google Analytics