最近看了些开源的统计图表组件,主要看了fusionChart 和JfreeChart jfreeChart还没有深入了解,暂不做评论。
使用fusionChart主要是被其界面吸引了,各类图表都很好看,下载以后文档也很周全,支持的语言也很多种 ,容易上手。fusionChart工作原理主要是通过后台传xml数据源给报表前台flash flash复杂接收数据并渲染成最终的图表。
至于好不好用,仁者见仁了。我用起来感觉还是很舒服的,暂时还没做比较复杂的图表,目前的功能是够用的。这里主要说说使用中碰到的问题,和我的解决办法
第一 用过的人肯定都有会碰到,就是中文支持,按照默认的输出,肯定最后数据无法渲染。 fusionChart 有两种调用xml数据方法 setDataURL 和setDataXml方法。现就两种方式中文支持方法一一描述一下
1 先说
setDataXml吧,这个好解决,只要输出是response.setCaractEncoding("utf-8")即可,我的系统统一都是utf-8编码,其它我没试。由于配置时已经加过编码过滤器了,所以这部也可省略。这样做的缺点就是输出xml过长可能会有问题。
2
setDataURL方法,我之前上网查过很多网站,说法都是fusionChart free版本的这个有bug,用这个不能支持中文。我试了很多方法也确实都不行,后翻到官方文档中带的例子中输出日语的一个,恍然大悟
byte[] utf8Bom = new byte[]{(byte) 0xef, (byte) 0xbb, (byte) 0xbf};
String utf8BomStr = new String(utf8Bom,"UTF-8");
这一段是关键,就是需要在你输出的xml字符串之前加上utf-8 bom技术标示,这样前台就可以读出中文了。还有一点需要注意,就是url是带参数的如下
/statistics/chartData.do?name=${searchName}${urlParam}“&”符号fusionChart是不认的,也需要
URLEncoder.encoding转换中文的支持就先说到这了,我用的 setDataURL 中文显示现在已经没什么问题了
第二 就是比较头疼的 柱状图中横坐标 标题中文不显示的问题,主要因为fusionChart强行旋转了y轴标题的文字,汉字是不支持的 网上的解决办法是加上xml根结点加属性 rotateYAxisName=‘0’ 我试过不起作用
后来才知道是
fusionChart free版本是不支持这个属性,fusionChart v3版本支持这个,我下载过破解的v3版试过,确实好用,但我不喜欢v3的默认风格,所以还是想从free版上解决问题。我的解决办法就是
sothink swf decompiler工具把相应的swf破解了,直接改源代码 既然是yAxisName出了问题当然就是从这下手,找到yAxisName的相关代码,很快找到生成的那段AS
if (this.Params.xAxisName != "")
{
createText(this.getLevel(), this.Params.xAxisName, this.Objects.Canvas.xPos + this.Objects.Canvas.width / 2, this.Objects.Canvas.height + this.Objects.xAxisName.yPos, this.Params.outCnvBaseFont, this.Params.outCnvBaseFontSize, this.Params.outCnvBaseFontColor, true, "center", "center", null, true);
} // end if
if (this.Params.yAxisName != "")
{
createText(this.getLevel(), this.Params.yAxisName, this.Objects.yAxisName.xPos, this.Objects.Canvas.yPos + this.Objects.Canvas.height / 2, "Verdana", Number(this.Params.outCnvBaseFontSize) + 1, this.Params.outCnvBaseFontColor, false, "center", "center", 270, true);
} // end if
注意看倒数第五 和倒数第二个参数 输出x轴和y轴有什么不同,改成一样就可以了,编译好把flash替换了刷新页面 横向输出的y轴坐标已经出来了。还有点不完美的就是第一个字显示了一半被截掉了一样,看着不舒服,解决办法: 输出的xml根节点加上 chartLeftMargin=‘30’属性。ok大功告成
破解过fusionChart的free版才知道,这个版是用的as1.0写的,还好不难改,估计和历史原因有关吧,看了v3版的代码用的高版本 要规范很多了,很多as独立成文件,文件夹也组织有序些。
分享到:
相关推荐
**jBPM 4 使用手记** jBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了全面的业务流程管理和工作流解决方案。在jBPM 4这个版本中,开发者可以利用其强大的功能来设计、执行和管理...
资源名称:Python数据分析教程_NumPy使用手记内容简介:NumPy系统是Python的一种开源的数字扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以...
IT项目经理成长手记IT项目经理成长手记IT项目经理成长手记IT项目经理成长手记IT项目经理成长手记
IT项目经理成长手记PDF,非常不错的资源
这篇使用手记将深入探讨其基本使用方法、数据绑定以及客户端行维护等核心功能,帮助程序员提高开发效率。 ### 一、基本使用方法 1. **导入Dll文件**:首先,你需要在项目中引入AspxGridView相关的DLL文件,通常...
史上最全的AspxGridView使用手记,是word文档(共84页!),下面的目录 一、 基本使用方法 4 1.导入Dll文件 4 2.Asp.Net页面控件注册 4 3. Asp.Net页面控件声明 5 4.删除licenses.licx协议文件(盗版) 5 5.功能概述 5 二...
【匠人手记】是一份综合性的资源集合,包含了丰富的 IT 知识和技术文档,旨在为专业人士提供全面的学习和参考材料。这份压缩包文件可能是由一位经验丰富的 IT 从业者或教育者整理,以"匠人"的精神,精益求精,将各种...
**JRebel 热插件使用手记** JRebel 是一款强大的 Java 开发工具,它能够实现在不重启应用服务器的情况下实时更新代码,极大地提高了开发效率。本文将详细介绍 JRebel 的安装、配置以及如何在实际开发中充分利用其热...
本资料“MATLAB GUI设计学习手记(第2版)”主要面向初学者,旨在帮助他们快速掌握GUI的设计技巧。 GUI(图形用户界面)在MATLAB中的设计是通过GUIDE(GUI Development Environment)工具完成的,它提供了一个可视化...
### MySQL 数据库使用手记知识点总结 #### 一、安装与配置MySQL ##### 环境准备 - **操作系统**: Windows XP(兼容Windows 2000、Windows 2003) - **MySQL版本**: MySQL 5.0 **假设前提**: MySQL系统已安装完成...
水晶报表是一个优秀的报表开发工具,本人在开发通用管理系统的时候,所有报表都使用水晶报表,其简单、易用和强大的功能令笔者倍加喜爱,现将水晶报表使用手记呈现给大家。
这篇“【笔记】AVR使用手记”所涉及的知识点主要包括AVR单片机的时钟系统配置、外围晶振的故障排查以及熔丝位设置。 首先,AVR单片机的时钟系统对整个微控制器的工作至关重要。正常上电后,单片机需要有一个稳定的...
Linux服务器也可以很简单——Quick Enterprise Linux AS4使用手记.pdf
很不错的NumPy使用手记,好好学习。
软件开发方面,手记可能会涵盖编程语言的选择(如C语言或汇编语言),以及如何使用开发环境进行编程、编译和调试。单片机程序的下载和烧录过程也会有详细的说明,这对于初学者来说是非常实用的信息。 接口技术是...
《IT项目经理成长手记》是一本专为那些渴望在信息技术领域中担任项目经理角色的人们精心编写的指南。这本书深入探讨了IT项目管理的核心概念、关键技能以及实际操作中的经验教训,旨在帮助读者从新手到专家逐步提升...
匠人手记:一个单片机工作者的实践与思考匠人手记【完整高清版】
于博士SI设计手记,主要讲解了信号完整性基本理论和在实际工作中的经验。