📄 jgantt.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 + -