⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jgantt.jsp

📁 提供 精通Java Web动态图表编程 一书的源代码, 大家赶快下载呀
💻 JSP
字号:
<!--
	Fig. 8.2_17: jGantt.jsp
	功能: JFreeChart实例17: 甘特图
-->
<%@ page language="java" contentType="image/png;charset=GB2312"
	import="java.awt.*"
	import="java.text.*"
	import="java.util.*"
	import="org.jfree.chart.*"
	import="org.jfree.chart.axis.*"
	import="org.jfree.chart.servlet.*"
	import="org.jfree.chart.plot.*"
	import="org.jfree.chart.renderer.*"
	import="org.jfree.chart.axis.*"
	import="org.jfree.chart.entity.*"
	import="org.jfree.chart.labels.*"
	import="org.jfree.chart.title.*"
	import="org.jfree.chart.renderer.xy.*"
	import="org.jfree.data.*"
	import="org.jfree.data.category.*"
	import="org.jfree.data.gantt.*"
	import="org.jfree.data.time.*"
	import="org.jfree.ui.*"
	import="org.jfree.util.*"
%>
<%!    
	String chartTitle = "软件开发周期";

	// 创建数据集
	public IntervalCategoryDataset createDataset()
	{        
        TaskSeries s1 = new TaskSeries("计划");
        s1.add(new Task("软件开发可行性研究",
				new SimpleTimePeriod(getDate(2004, 2, 20), getDate(2004, 3, 5))));
        s1.add(new Task("获得批准",
				new SimpleTimePeriod(getDate(2004, 3, 6), getDate(2004, 3, 9))));
        s1.add(new Task("需求分析",
				new SimpleTimePeriod(getDate(2004, 3, 12), getDate(2004, 3, 30))));
        s1.add(new Task("流程、数据分析",
				new SimpleTimePeriod(getDate(2004, 4, 1), getDate(2004, 5, 10))));
        s1.add(new Task("系统总体设计",
				new SimpleTimePeriod(getDate(2004, 5, 11), getDate(2004, 6, 2))));
        s1.add(new Task("开发文档编写",
				new SimpleTimePeriod(getDate(2004, 6, 3), getDate(2004, 6, 31))));
        s1.add(new Task("程序设计",
				new SimpleTimePeriod(getDate(2004, 7, 1), getDate(2004, 8, 8))));
        s1.add(new Task("Alpha 测试",
				new SimpleTimePeriod(getDate(2004, 8, 10), getDate(2004, 8, 25))));
        s1.add(new Task("Beta 测试",
				new SimpleTimePeriod(getDate(2004, 8, 26), getDate(2004, 9, 15))));
        s1.add(new Task("系统总体测试",
				new SimpleTimePeriod(getDate(2004, 9, 16), getDate(2004, 10, 31))));
        s1.add(new Task("系统运行维护",
				new SimpleTimePeriod(getDate(2004, 11, 1), getDate(2004, 11, 15))));
        s1.add(new Task("软件开发结束",
				new SimpleTimePeriod(getDate(2004, 11, 18), getDate(2004, 11, 27))));

        TaskSeries s2 = new TaskSeries("实际完成周期");
        s2.add(new Task("软件开发可行性研究",
				new SimpleTimePeriod(getDate(2004, 2, 20), getDate(2004, 3, 5))));
        s2.add(new Task("获得批准",
				new SimpleTimePeriod(getDate(2004, 3, 6), getDate(2004, 3, 9))));
        s2.add(new Task("需求分析",
				new SimpleTimePeriod(getDate(2004, 3, 12), getDate(2004, 3, 25))));
        s2.add(new Task("流程、数据分析",
				new SimpleTimePeriod(getDate(2004, 3, 26), getDate(2004, 4, 27))));
        s2.add(new Task("系统总体设计",
				new SimpleTimePeriod(getDate(2004, 5, 1), getDate(2004, 6, 8))));
        s2.add(new Task("开发文档编写",
				new SimpleTimePeriod(getDate(2004, 6, 9), getDate(2004, 7, 5))));
        s2.add(new Task("程序设计",
				new SimpleTimePeriod(getDate(2004, 7, 8), getDate(2004, 8, 8))));
        s2.add(new Task("Alpha 测试",
				new SimpleTimePeriod(getDate(2004, 8, 10), getDate(2004, 8, 15))));
        s2.add(new Task("Beta 测试",
				new SimpleTimePeriod(getDate(2004, 8, 16), getDate(2004, 9, 2))));
        s2.add(new Task("系统总体测试",
				new SimpleTimePeriod(getDate(2004, 9, 5), getDate(2004, 10, 10))));
        s2.add(new Task("系统运行维护",
				new SimpleTimePeriod(getDate(2004, 10, 15), getDate(2004, 11, 25))));
        s2.add(new Task("软件开发结束",
				new SimpleTimePeriod(getDate(2004, 11, 26), getDate(2004, 12, 5))));

        TaskSeriesCollection collection = new TaskSeriesCollection();
        collection.add(s1);
        collection.add(s2);

        return collection;           
    }

	public JFreeChart createChart(IntervalCategoryDataset dataset) 
	{
		// 创建图表对象
		JFreeChart chart = ChartFactory.createGanttChart
		(
			chartTitle,				  // 图表标题
			"开发阶段",		          // 坐标标题
			"所需时间",               // 坐标标题
			dataset,                  // 定义绘制数据
			true,                     // 定义图表是否包含图例
			true,                     // 定义图表是否包含提示
			false                     // 定义图表是否包含URL
		 );
		 
		 return chart;
	}

	public Date getDate(int year, int month, int day) 
	{
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month, day);
        Date date = calendar.getTime();
        return date;
    }
%>
<%
		// 创建一个 500X375 的图像
		int width=500, height=375;		

        IntervalCategoryDataset dataset = createDataset();
        JFreeChart chart = createChart(dataset);

        // 开始自定义图表绘制的相关属性

        // 设置整个图表的背景颜色
		GradientPaint bgGP = new GradientPaint(0, 0, Color.WHITE, 
		  width, height, Color.CYAN, false);
        chart.setBackgroundPaint(bgGP);
		
		CategoryPlot plot = chart.getCategoryPlot();
		DateAxis rangeAxis = (DateAxis)plot.getRangeAxis();
		DateFormat df = new SimpleDateFormat("yyyy-MM");
        DateTickUnit unit = new DateTickUnit(DateTickUnit.DAY, 60, df);
		rangeAxis.setTickUnit(unit) ;  

		// 结束自定义图表绘制的相关属性
		
		ChartRenderingInfo info = 
				   new ChartRenderingInfo(new StandardEntityCollection());

		// 设置图片生成格式
        String fileName = 
		   ServletUtilities.saveChartAsPNG(chart, width, height, info, session);
	
        // 设置图片生成路径
		String graphURL = 
		   request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName; 
%>
<HTML>
 <HEAD>
       <TITLE><%=chartTitle%></TITLE>
 </HEAD>
 <BODY>
       <P ALIGN="CENTER">
       <img src="<%=graphURL %>" border="1" >
       </P>
 </BODY>
</HTML>

<%
/**************************************************************************
 * (C) Copyright 2004-2005 by Jingkui Zhong(钟京馗) and Huan Tang(唐桓).  *
 * All Rights Reserved.                                                   *
 *                                                                        *
 * DISCLAIMER: The authors of this code have used their                   *
 * best efforts in preparing the code. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these codes. The authors *
 * shall not be liable in any event for incidental or consequential       *
 * damages in connection with, or arising out of, the furnishing,         *
 * performance, or use of these programs.                                 *
 **************************************************************************/
 %>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -