步骤:
下载jofc2,下载地址是http://code.google.com/p/jofc2/,这个是google对OFC做扩展的包,以前有个ofc4j的项目,不过好像已经Freeze了。
当然要下载OFC,我下载的是http://www.ofc2dz.com/上的,貌似原生的ofc不支持json格式的数据,而这个支持。
把文件open-flash-chart.swf放到网站根目录,然后把swfobject.js放到js目录,把jofc2的jar放到WEB-INF/lib,注意需要把依赖包也加入,在jofc的lib目录下。
下面就可以开始了,页面上的代码(我这里加了jQuery的库):
$(document).ready(function(){
$('#viewbtn').bind('click',function(){
var url = 'CategoryRankImg.do?year=' + $('#year').val();
swfobject.embedSWF("<s:url value="/open-flash-chart.swf"/>", "chart", "550", "300", "9.0.0",
"expressInstall.swf",
{"data-file":url});
});
});
然后,在action中,即可用jofc2的类了:
private Chart flashChart;
public String draw(){
PieChart c2 = new PieChart(); //饼图
List<CompanyProperty> list = cppSvr.find(0,0);
for(CompanyProperty cpp : list){
List results = bkSvr.findByNamedQuery("bk.qryCateRank", Integer.parseInt(year),cpp.getId());
Long cnt = (Long)results.get(0);
c2.addSlice(cnt==null?0:cnt, cpp.getName()); //增加一块
}
c2.setStartAngle(-90); //开始的角度
c2.setColours(new String[] {
"0x336699", "0x88AACC", "0x999933", "0x666699",
"0xCC9933", "0x006666", "0x3399FF", "0x993300",
"0xAAAA77", "0x666666", "0xFFCC66", "0x6699CC",
"0x663366", "0x9999CC", "0xAAAAAA", "0x669999",
"0xBBBB55", "0xCC6600", "0x9999FF", "0x0066CC",
"0x99CCCC", "0x999999", "0xFFCC00", "0x009999",
"0x99CC33", "0xFF9900", "0x999966", "0x66CCCC",
"0x339966", "0xCCCC33" });//饼图每块的颜色
c2.setTooltip("#val# / #total#<br>占百分之 #percent#\n 角度 = #radius#"); //鼠标移动上去后提示内容
flashChart = new Chart("企业性质排序"+year + "年"); //整个图的标题
flashChart.addElements(c2); //把饼图加入到图表
return Action.SUCCESS;
}
其实在输出flashChart对象的时候,是输入一串json数据,但我不知道是不是和struts2的json plugin能够合起来,所以我自己写了一个ActionResult:
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import jofc2.model.Chart;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.StrutsResultSupport;
import com.opensymphony.xwork2.ActionInvocation;
public class FlashChartResult extends StrutsResultSupport{
private static final String ENCODING = "UTF-8";
/**
*
*/
private static final long serialVersionUID = 4702848904993212381L;
@Override
protected void doExecute(String str, ActionInvocation inv)throws Exception {
Chart chart = (Chart) inv.getStack().findValue("flashChart");
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/json-rpc;charset=" + ENCODING);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Expires", "0");
response.setHeader("Pragma", "No-cache");
String json = chart.toString();
response.setContentLength(json.getBytes(ENCODING).length);
PrintWriter out = response.getWriter();
out.print(json);
out.flush();
out.close();
}
}
struts的配置内容:
<result-type name="ofc" class="com.nbrc.market.helper.FlashChartResult"></result-type>
……
<action name="PositionCateRank" class="PositionRankAction" method="query">
<result type="ofc"></result>
</action>
这样就大功告成了。
最后还要讲几句,这个jofc2的库源代码有,但是javadoc里很少有东西,所以写代码可能不太方便,需要慢慢摸索,我一天只做了饼图和条状图,条状图的代码:
public String query(){
if(marketId==null || marketId.equals("")){
return Action.NONE;
}
MarketPlan p = mrpSvr.findById(marketId);
planName = p.getTitle();
BarChart chart = new BarChart(BarChart.Style.GLASS);//设置条状图样式
Map<String, Long> result = rriSvr.getPositionCateRankByPlan(marketId,10);
long max = 0;//Y轴最大值
XAxis x = new XAxis();//X轴
for(String key:result.keySet()){
PositionCategory pc = pctSvr.findById(key);
Long tmp = result.get(key);
Bar bar = new Bar(tmp,pc.getPositionTitle()); //条标题,显示在x轴上
bar.setColour("0x336699"); //颜色
bar.setTooltip(pc.getPositionTitle()+"#val# 个岗位"); //鼠标移动上去后的提示
if(tmp>max){
max = tmp;
}
chart.addBars(bar);
x.addLabels(pc.getPositionTitle()); //x轴的文字
}
flashChart = new Chart();
flashChart.addElements(chart);
YAxis y = new YAxis(); //y轴
y.setMax(max+10.0); //y轴最大值
y.setSteps(max/10*1.0); //步进
flashChart.setYAxis(y);
flashChart.setXAxis(x);
return Action.SUCCESS;
}
最后还要注意,在传递参数的时候要把&符号转换成%26!切记切记,如
var url = 'SumCountChart.do?startTime=' + $('#startTime').val()+"%26endTime="+$('#endTime').val();
swfobject.embedSWF("<s:url value="/open-flash-chart.swf"/>", "chart", "550", "300", "9.0.0", "expressInstall.swf", {"data-file":url});
- 大小: 80.5 KB
分享到:
相关推荐
预览地址: http://www.iflex4.com/samples/openflashchartsample/ofcsample.html 由www.iflex4.com制作 qq群:121987778
Open Flash Chart 是一款开源的Flash图表库,它允许开发者通过简单的JavaScript API生成各种美观的、交互式的图表。这个教程可能是为了帮助用户理解如何利用Open Flash Chart来创建动态和定制化的图表,适合Web...
《Open Flash Chart 制图Demo及文档解析》 在当今数据可视化领域,Open Flash Chart是一款广泛应用的开源图表库,它以其强大的功能和丰富的定制性深受开发者喜爱。本篇将深入探讨"Open Flash Chart 制图Demo及文档...
《Open Flash Chart-2 简单教程及DEMO解析》 Open Flash Chart-2 是一个开源的Flash图表库,它允许开发者通过简单的JavaScript API创建交互式的、视觉效果丰富的图表。这个库尤其适用于那些需要在网页上展示数据的...
由于最近公司项目中要用到图表,看到Open Flash Chart这个还不错,开源的,而且官方还附带了很多Demo,最重要的是支持很多的语言,只是这个东西一直很久没有更新,在网上找了很多资料,找到了Open Flash Chart社区...
"Open Flash Chart"是一款强大的开源图表库,专为Web开发者设计,用于在网页上创建交互式、美观的图表。这个库使用Flash技术,通过JavaScript与服务器端的数据进行交互,能够生成各种类型的图表,如柱状图、折线图、...
"chart" 指的是图表功能,"flash_chart" 明确了它是基于Flash的图表库,"open" 和 "open_flash_chart" 强调其开源性质,而 "openflash_chart" 是项目名称的另一种拼写方式。 【压缩包子文件】: 1. "open-flash-...
DEMO:VS2010 ASP.NET MVC3.0 包含了多种图形报表:竖柱、横柱、曲线、网状、块状、混合(竖柱+曲线) ...对open-flash-chart源码做了一些优化:主要针对横柱,可以对每条柱设置颜色和显示值,鼠标悬停优化等...
- 创建SWFObject实例,指定Flash文件路径、ID、尺寸、最低Flash版本以及背景色等参数。 - 可设置额外参数如质量、模式等。 - 使用`write`方法将Flash内容插入到指定的HTML元素中。 #### 四、如何使用...
在Java开发中,为了创建美观且交互性强的...通过学习和实践提供的demo及文档,开发者可以快速掌握OpenFlashChart的使用,提升应用程序的用户体验。同时,与JSP和Java的结合使用也使得数据可视化变得更加便捷和高效。
图表控件openflashchart的Demo源码 OpenFlashChart是一个开源的报表制作组件,该组件能够自动生成一个好看的、动态的flash报表;该组件使用flash展示报表能够很好的做到与浏览器进行集成,目前浏览器基本都能很好的...
flash报表中,比较出名的有以下三个,open flash chart(OFC),amcharts, funsionchart,OFC开源,但是感觉没其他两个漂亮。amcahrts感觉太复杂,功能太强一般都用不到。funsionchart,分为免费版和商业版,一般免费版...
flash报表中,比较出名的有以下三个,open flash chart(OFC),amcharts, funsionchart,OFC开源,但是感觉没其他两个漂亮。amcahrts感觉太复杂,功能太强一般都用不到。funsionchart,分为免费版和商业版,一般免费版就...
OpenFlashChart是一个使用Flash技术的图表库,它可以生成多种类型的图表,如柱状图、饼图、线图、面积图等。这个库的优点在于其高度可定制性,可以调整颜色、样式、标签等参数,以满足各种视觉需求。在...
相机类--flash light 相机之实用手电筒 选项卡类 选项卡之AKTabBarController 选项卡之Arc Tab 选项卡之LSTabs 选择器类 选择器类--PickerView with Search Bar 选择器类--Value Selector 选择器类--Wheel Menu...