急!问个有关struts1和jfreechart的问题! 项目里使用了SSH框架(Struts1)后,如何用Jfreechart生成柱状图和线状图啊?希望高人们能指点小弟一下!最好能给个例子或代码!先谢谢了!急!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://topic.csdn.net/u/20090831/13/c6976093-bca6-4637-994e-c0a8bcbc0855.html1楼的是jfreechart的官方网,上面有很多好的实例6楼的超链接是普通的实现实例 有例子但都掺在项目里边了,楼主去csdn下载区去搜下吧,一堆一堆的。我就是从那上边找了个随便改的。Struts1下和在Servelt下一样,不过跳转的是.do而已,如果Struts2就不同了,需要整合。呵呵。 哪位高人有结合struts1的实例啊,就给小弟一份吧!急啊! 我做过,不过我的是饼图的,但原理都一样的,贴一下主要的代码吧jsp页面//获得统计数据List Statistics = (List)request.getAttribute("Statistics");//生成的图片名字String fileName=StatisticsChart.generatePieChart(session,new PrintWriter(out),580,250,Statistics);//map映射String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName;下面是图片显示:<img src="<%= graphURL %>"width=580 height=250 border=0 usemap="#<%=fileName%>">generatePieChart方法写在action里public static String generatePieChart(HttpSession session, PrintWriter pw,int w, int h, List Statistics){ String filename = null; PieDataset dataset = getDataSet(Statistics); JFreeChart chart = ChartFactory.createPieChart3D( "需求评价统计图", // 图表标题 dataset, // 数据集 true, // 是否显示图例 true, // 是否生成工具 true // 是否生成URL链接 ); chart.setBackgroundPaint(Color.white); chart.getTitle().setFont(new Font("黑体",Font.BOLD,16)); chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,12)); PiePlot pieplot = (PiePlot) chart.getPlot(); pieplot.setURLGenerator(new StandardPieURLGenerator("url","url参数","")); pieplot.setLabelFont(new Font("宋体", 0, 12)); pieplot.setNoDataMessage("no data!"); // 设置开始角度 pieplot.setStartAngle(150D); // 设置方向为顺时针方向 pieplot.setDirection(Rotation.CLOCKWISE); // 设置透明度,0.5F为半透明,1为不透明,0为全透明 pieplot.setForegroundAlpha(1); //pieplot.setExplodePercent("满意", 0.20000000000000001D); //显示百分比,但不显示百分比后小数 //pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} = {1}({2})")); pieplot.setLabelBackgroundPaint(java.awt.Color.white); //pieplot.setLegendLabelToolTipGenerator(new StandardPieSectionLabelGenerator("Tooltip for legend item {0}"));//[5] //显示百分比,并让百分比保留两位小数 pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator( "{0} ({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%"))); pieplot.setSimpleLabels(true); //Sets the interior gap and sends a PlotChangeEvent to all registered listeners. pieplot.setInteriorGap(0.0D);//[7] //设置扇区边框不可见 pieplot.setSectionOutlinesVisible(false); //pieplot.setToolTipGenerator(new StandardPieToolTipGenerator()); try { /*------得到chart的保存路径----*/ ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection()); filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,session); /*------使用printWriter将文件写出----*/ ChartUtilities.writeImageMap(pw, filename, info, false); pw.flush(); } catch (IOException e) { e.printStackTrace(); } return filename; } /** * 获取一个饼状图的简单数据集对象 * @return */ private static PieDataset getDataSet(List Statistics) { DefaultPieDataset dataset = new DefaultPieDataset(); Statistics Statistics = null; for(int i = 0; i < Statistics.size(); i++) { Statistics = (Statistics)Statistics.get(i); dataset.setValue(Statistics.getStatisticsName(), Statistics.getStatisticsNumber()); } return dataset; } 应该有个方法可以得到流,页面端直接调用这个请求就行。类似于点击获得注册码图片。OutputStream ops = response.getOutputStream()javax.imageio.ImageIO.write(bi, "jpeg", ops);//bi 为 java.awt.image.BufferedImage楼主查查Jfreechart的api有没有获得BufferedImage的。 先谢谢以上各楼大侠的帮助。不过还有个问题,10楼的朋友的帖子里的jsp页面中是否要导入某些JAR包啊?请具体说一下啊!另外,把查询结果LIST转成(或存到)jfreechart需要的dataset有没有更好的方法啊?11楼的朋友提到的BufferedImage好像还没找到啊? jar包当然要导入的啊,我用的是1.0.13,最新的,你去官网下载下来然后拷到lib下就行了把查询结果LIST转成(或存到)jfreechart需要的dataset有没有更好的方法啊? 回答:我没有想到什么好方法,自己就这么做的,你如果想到,也可以给大家分享一下 呵呵,如果是java文件,你没引入的话,会有个红叉子,鼠标放在哪里,然后就会提示你引入什么包,或者你在那个红叉子上面,ctrl+shift+m,引入所需要的包,ctrl+shift+o,引入所有需要的包,自己试试吧, 继续期待把查询结果LIST转成(或存到)jfreechart需要的dataset的好方法! 我想有人答复这个问题,很难,我搞map的时候,问了半天,都没人理,最后还是自己搞定!希望有人能知道,一起期待! 求一个SSH2加泛型的demo POI读DOCX文档 Mysql [新手求助高人]关于j2ee学习的请教 求助!!!! 寻找厦门的软件团队,项目外包 JAVA写的程序能够放在浏览器里面执行吗? ★ 请教一个CMR的简单问题 ★ 使用反射调用方法传对象报错 java.lang.reflect.InvocationTargetException java.lang.NullPointer 关于JDBC与Map的一个问题,求教 tomcat中以什么编码方式进行传输啊 java 文件读取
6楼的超链接是普通的实现实例
Struts1下和在Servelt下一样,不过跳转的是.do而已,如果Struts2就不同了,需要整合。呵呵。
//获得统计数据
List Statistics = (List)request.getAttribute("Statistics");//生成的图片名字
String fileName=StatisticsChart.generatePieChart(session,new PrintWriter(out),580,250,Statistics);//map映射
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName;
下面是图片显示:
<img src="<%= graphURL %>"width=580 height=250 border=0 usemap="#<%=fileName%>">
generatePieChart方法写在action里
public static String generatePieChart(HttpSession session, PrintWriter pw,int w, int h, List Statistics){
String filename = null;
PieDataset dataset = getDataSet(Statistics);
JFreeChart chart = ChartFactory.createPieChart3D(
"需求评价统计图", // 图表标题
dataset, // 数据集
true, // 是否显示图例
true, // 是否生成工具
true // 是否生成URL链接
);
chart.setBackgroundPaint(Color.white);
chart.getTitle().setFont(new Font("黑体",Font.BOLD,16));
chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,12));
PiePlot pieplot = (PiePlot) chart.getPlot();
pieplot.setURLGenerator(new StandardPieURLGenerator("url","url参数",""));
pieplot.setLabelFont(new Font("宋体", 0, 12));
pieplot.setNoDataMessage("no data!");
// 设置开始角度
pieplot.setStartAngle(150D);
// 设置方向为顺时针方向
pieplot.setDirection(Rotation.CLOCKWISE);
// 设置透明度,0.5F为半透明,1为不透明,0为全透明
pieplot.setForegroundAlpha(1);
//pieplot.setExplodePercent("满意", 0.20000000000000001D);
//显示百分比,但不显示百分比后小数
//pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} = {1}({2})"));
pieplot.setLabelBackgroundPaint(java.awt.Color.white);
//pieplot.setLegendLabelToolTipGenerator(new StandardPieSectionLabelGenerator("Tooltip for legend item {0}"));//[5]
//显示百分比,并让百分比保留两位小数
pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0} ({2})", NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));
pieplot.setSimpleLabels(true);
//Sets the interior gap and sends a PlotChangeEvent to all registered listeners.
pieplot.setInteriorGap(0.0D);//[7]
//设置扇区边框不可见
pieplot.setSectionOutlinesVisible(false);
//pieplot.setToolTipGenerator(new StandardPieToolTipGenerator());
try {
/*------得到chart的保存路径----*/
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,session);
/*------使用printWriter将文件写出----*/
ChartUtilities.writeImageMap(pw, filename, info, false);
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}
return filename;
}
/**
* 获取一个饼状图的简单数据集对象
* @return
*/
private static PieDataset getDataSet(List Statistics) {
DefaultPieDataset dataset = new DefaultPieDataset();
Statistics Statistics = null;
for(int i = 0; i < Statistics.size(); i++) {
Statistics = (Statistics)Statistics.get(i);
dataset.setValue(Statistics.getStatisticsName(), Statistics.getStatisticsNumber());
}
return dataset;
}
OutputStream ops = response.getOutputStream()
javax.imageio.ImageIO.write(bi, "jpeg", ops);//bi 为 java.awt.image.BufferedImage
楼主查查Jfreechart的api有没有获得BufferedImage的。
不过还有个问题,
10楼的朋友的帖子里的jsp页面中是否要导入某些JAR包啊?请具体说一下啊!
另外,把查询结果LIST转成(或存到)jfreechart需要的dataset有没有更好的方法啊?
11楼的朋友提到的BufferedImage好像还没找到啊?
回答:我没有想到什么好方法,自己就这么做的,你如果想到,也可以给大家分享一下
把查询结果LIST转成(或存到)jfreechart需要的dataset的好方法!
希望有人能知道,一起期待!