Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java EE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 [原创]Jcharts学习笔记
wmgreat



CJSDN高级会员


发贴: 286
积分: 105
于 2004-03-02 11:09 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Jcharts是个不错的免费图形报表工具,自己一直没有做过这方面的东东,在cjsdn上看到yj780210兄的翻译的中文文档,正好可以由此开头学习学习.yj780210兄的中文文档翻译的非常不错,可是对初学者来说刚开始看可能是有点晕头,英文的原文文档中没有系统的介绍Jcharts的框架,只是给出一些源码.我研究了好几天,才开始把头绪理清楚,下面是我自己对Jcharts的理解,应该有不对的地方(说实话俺就看了2天),请大家一起指正,共同进步(如果大家有什么经验,可以通过zcwm@163.net和俺交流).

下面我以为XY轴图为例(我把只要有X,Y轴的都统一叫XY轴图)

首先谈谈我对Jcharts框架的理解,刚开始看例子的时候,觉得为什么会要产生那么多的类,一时间如云中雾里,其实一切的根源都来自AxisChart类,这个类是最终提供给用户的,这里所用的例子是XY轴图,所以提供的是AxisChart,如果是饼图,那最终返回给用户的则是PieChart2D类.为什么一切根源都是来自AxisChart类,因为其他所做的一起都是为了提供给AxisChart实例化时所需要的构造函数做准备.如:

AxisChart axischart = nwe AxisChart(IAxisDataSeries iAxisDataSeries, ChartProperties chartProperties, AxisProperties axisProperties, LegendProperties legendProperties, int pixelWidth, int pixelHeight)

第一个参数是制造图形说需要的数据,第二个参数是所生成图像的属性,第三个参数是XY轴的属性,第四个则是图例的属性,第五,六则是生成图形的宽,高.

剩下我们所要做的就是为这些参数进行初始化了.
我们首先进行第一参数也是最重要的参数IAxisDataSeries iAxisDataSeries的实例化.

用以下代码进行实例化:
String[] xAxisLabels = {"1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004"};
String xAxisTitle = "Years";
String yAxisTitle = "Problems";
String title = "Microsoft At Work";
IAxisDataSeries dataSeries = new DataSeries( xAxisLabels, xAxisTitle, yAxisTitle, title );
这样实例化以后就大体构造出XY轴图的X,Y轴以及X,Y各自的标题和图形的标题.

以上的代码只是构造XY轴图的大体形状,可是我们所要表示的数据呢?OK,下面我就进行数据的添加.
数据的添加需要生成AxisChartDataSet对象,而该对象实例化以后会被加入到IAxisDataSeries对象中,例如下面的代码:
double[][] data = new double[][]{{1500, 6880, 4510, 2600, -1200, -1580, 7000, 4555, 4000, 6120}};
String[] legendLabels = {"Dog"};
Paint[] paints = new Paint[]{Color.blue};
BarChartProperties barChartProperties new BarChartProperties();
dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data, legendLabels, paints, ChartType.BAR,this.barChartProperties ) );
我们同样重点分析AxisChartDataSet的构造函数.
第一个参数,double型2维数组,用来表示所要显示的图像数据,第二个参数用来说明图例的名称,第三个用来说明图形的颜色,第四个参数则是决定你用什么方式来表示哪些数据,是用折线,还是用条形......都是这个参数来决定,最后一个参数真是根据第四个参数来决定的,因为我们选用的是条形图,那么最后一个参数也就是用来表示条形图的属性的对象.

当我们把DataSet构造好以后,那么我们就把该DataSet加入到dataSeries中:
dataSeries.addIAxisPlotDataSet(axisChartDataSet);
好的,到现在为止我们就已经构造完要生成AxisChart对象的第一个参数了.

对应AxisChart对象的其他参数,如果你和我一样懒的话,就直接生成该类的对象就好了,然后实例化的时候直接用就够了,如下:
LegendProperties legendProperties = new LegendProperties();
AxisProperties axisProperties = new AxisProperties( false );
ChartProperties chartProperties = new ChartProperties();
如果要对X,Y轴的字体进行设置,可以如下:
ChartFont axisScaleFont = new ChartFont(new Font( "Georgia Negreta cursiva", Font.PLAIN, 13 ), Color.black );
axisProperties.getXAxisProperties().setScaleChartFont( axisScaleFont );
axisProperties.getYAxisProperties().setScaleChartFont( axisScaleFont );
ChartFont axisTitleFont = new ChartFont( new Font( "Arial Narrow", Font.PLAIN, 14 ), Color.black );
axisProperties.getXAxisProperties().setTitleChartFont( axisTitleFont );
axisProperties.getYAxisProperties().setTitleChartFont( axisTitleFont );

最后的两个参数:宽,高就看你自己的喜好了^_^.

OK,这样我就完整的构造出一个AxisChart了,现在要做的就是把它返回给用户了,如果你用servlet,你可以用如下代码进行:
ServletEncoderHelper.encodeJPEG13( axisChart, 1.0f, httpServletResponse );
ServletEncoderHelper类可以查看Jcharts的文档.
这样IE中就可以显示出我们想要的图形了.

在附件中,我做了一个servlet的例子,可以通过
http://localhost:8080/learnpicture/servlet/linechart
进行访问.



新世纪的曙光点亮了我们略带近视的眼睛。我们终于明白,诸神早已迎来了他们的黄昏,旧的偶像也都已纷纷落地,新的偶像还在摇篮里嗷嗷待哺……

话题树型展开
人气 标题 作者 字数 发贴时间
5684 [原创]Jcharts学习笔记 wmgreat 3151 2004-03-02 11:09
3367 Re:[原创]Jcharts学习笔记 wmgreat 8 2004-03-02 11:11

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923