`
kimfly
  • 浏览: 47119 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Cewolf使用小结

    博客分类:
  • java
阅读更多

Cewolf可以在一个基于Servlet/JSPWeb应用程序内部使用,基于JFreechart,利用JFreechart的绘制引擎的开源项目。以在Web页中嵌入各种复杂的图形图表(如,直方图、饼图、棒图等等)。它提供了一个功能完备的标签库来定义图表的所有属性(颜色、笔画、图例等),这样嵌入了图表的JSP就不用使用任何Java代码。

为了配置你的web工程,你必须编辑 /WEB-INF/web.xml,添加下列行。
<servlet></servlet>
  <servlet-name></servlet-name>CewolfServlet
  <servlet-class></servlet-class>de.laures.cewolf.CewolfRenderer

另外你要提供一个servlet-mapping来告诉容器URLCewolf绘图servlet的映射关系.
Additionally you should provide a servlet-mapping to tell the container which URL maps to your Cewolf rendering servlet.
<servlet-mapping></servlet-mapping>
   <servlet-name></servlet-name>CewolfServlet 
   <url-pattern></url-pattern>/cewolf/ *

你还需要告诉CeWolf的启动:
 <load-on-startup></load-on-startup>1

下载标签库jar包:
jar包下/Lib文件内容放在工程的/WEB-INF/lib 下面,/Lib文件内容:
jfreechart-*-demo.jar
jfreechart-*.jar
jcommon-*.jar
commons-logging.jar
cewolf.jar
batik-xml.jar
batik-util.jar
batik-svggen.jar
batik-dom.jar
batik-awt-util.jar
Mozilla
浏览器需要/example目录下的overlib.js,放入webapps根目录下。
在用Cewolf标签出现问题时,例如:"No Tags" is displayed in your containers console。你可以将cewolf.tldcewolf-1.1.tld  文件放入你在WEB项目根目录下的新建的文件夹中,就能在JSP中使用这些标签咯。

 1、创建一个数据源(dataset
   
创建数据源基本上和上面一样,所不同的是 cewolf 对其重新进行了包装,它提供了一个DatasetProducer 接口,你需要实现这一接口,下面是一个例子
  DatasetProducer pieData = new DatasetProducer() {
    public Object produceDataset(Map params) {
      //cewolf?
对其重新进行了包装
      final String[] categories = { "apples", "pies", "bananas", "oranges" };
      DefaultPieDataset ds = new DefaultPieDataset();
      //
怎么样?和上面一样吧
      for (int i = 0; i < categories.length; i++) {
        int y = (int) (Math.random() * 10 + 1);
        ds.setValue(categories[i], new Integer(y));
      }
      return ds;
    }

一个DatasetProducer需要实现3个方法,最重要的一个是produceDataset()方法,它实际上生成了一个用于画图的数据。这个方法用一个map作参数,这个map由许多指定的JSP标签填充,这个一会再介绍。
在当前生数据成器确实生成数据对象后,方法hasExpired()被才被Cewolf框架调用。当返回TRUE时,产生器将释放以前的数据。
Cewolf
框架通过 getProducerId()方法提生成的一个唯一ID来标识一个生成者。2个具有相同ID生成实例将被认为时生成相同的数据。

public String getProducerId() {
      return "PieDataProducer";//
返回唯一的ID
    }
    public boolean hasExpired(Map params, Date since) {
      return false;
    }
  };
  pageContext.setAttribute("pieData", pieData);//
产生完以后要把它放到页面中保存以给?cewolf标签调用

2<cewolf:chart></cewolf:chart>标签
  <cewolf:chart id="pieChart"></cewolf:chart>  //
这个id要唯一,给下边<cewolf:img>标签引用
    title="Pie
//图形的标题
    type="pie" //
图形的类型 >
    <cewolf:gradientpaint>
        <cewolf:point color="#FFFFFF" y="0" x="0"></cewolf:point>
        <cewolf:point color="#DDDDFF" y="0" x="300"></cewolf:point>
    </cewolf:gradientpaint>
    <cewolf:data>
        <cewolf:producer id="pieData"></cewolf:producer>
 //</cewolf:data>

<!---->
<!---->
引用上面产生的数据


 
一些说明:
 
关于图形的背景色,还有两个选择,分别是
    <cewolf:gradientpaint>   //</cewolf:gradientpaint>
 
产生色彩倾斜的背景
        <cewolf:point color="#AAAAFFEE" y="0" x="0"></cewolf:point>
        <cewolf:point color="#DDDDFF" y="0" x="300"></cewolf:point>
   

    <cewolf:texturepaint height="60" width="60" image="/img/bg.jpg"></cewolf:texturepaint>//
加入背景图案

3<cewolf:img>标签
   

4、看到上面的步骤,你可能会认为用 cewolf 输出图形是如此的简单,是这样的,但看了最开始的 jFreeChart 对图形的一些调整,你会想我如何调整呢?我不想用默认值,我想输出更复杂的图形。很好,我是这样做的:
   
这里要介绍一个新的接口ChartPostProcessor  和一个标签<cewolf:chartpostprocessor></cewolf:chartpostprocessor>我们要写自己的类实现这个ChartPostProcessor 接口,然后再用标签<cewolf:chartpostprocessor></cewolf:chartpostprocessor>调用我们所写的类
  ChartPostProcessor dataColor = new ChartPostProcessor() {
    public void processChart(Object chart, Map params) {  
    //
这个接口就这一个方法
    CategoryPlot plot = (CategoryPlot) ((JFreeChart) chart).getPlot(); //
看到了什么??!!对,获得了plot
       
下面就可以通过plot 对图形进行调整!!          
      plot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));  //
一个实验,坐标轴与图分离
      for (int i = 0; i < params.size(); i++) {   //
这里的params 是通过标签<cewolf:chartpostprocessor></cewolf:chartpostprocessor>输入的!
        String colorStr = (String) params.get(String.valueOf(i));
        plot.getRenderer().setSeriesPaint(i, java.awt.Color.decode(colorStr));//
看到 renderer了吧,
      }
    }
  };
  pageContext.setAttribute("dataColor", dataColor); //
记得要放起来噢

 具体引用:
              type="stackedHorizontalBar" xaxislabel="Fruit" yaxislabel="favorite">
    <cewolf:data>
        
    </cewolf:data>
    
  
 
在这里!!
        
我们当然也可以在实现ChartPostProcessor 接口的类里把一切都做好,然后这么用:
       

生成ImageMapTooltip信息是很简单的事情,
首先要实现接口CategoryItemLinkGeneratorCategoryToolTipGenerator (因为生成的是CategoryDataset). 别的数据类型请参见cewolf java apihttp://cewolf.sourceforge.net/new/apidoc/index.html
de.laures.cewolf.tooltips
下有4个接口:
CategoryToolTipGenerator
PieToolTipGenerator
ToolTipGenerator
XYToolTipGenerator
为了能让你的类能在图片上生成ImageMapTooltip,你必须对<cewolf:img>做如下修改:
<cewolf:img height="300" width="400" renderer="cewolf" chartid="line">  
 <cewolf:map id="pageViews"></cewolf:map>
</cewolf:img>

CategoryToolTipGenerator catTG = new CategoryToolTipGenerator() {
    public String generateToolTip(CategoryDataset dataset, int series, int index) {
      return String.valueOf(dataset.getValue(series, index));
    }
  };
  pageContext.setAttribute("categoryToolTipGenerator", catTG);

PieToolTipGenerator pieTG = new PieToolTipGenerator() {
    public String generateToolTip(PieDataset dataset, Comparable section, int index) {
      return String.valueOf(index);
    }
  };
  pageContext.setAttribute("pieToolTipGenerator", pieTG);

<cewolf:img height="300" width="300" renderer="/cewolf" chartid="horizontalBarChart">
    <cewolf:map tooltipgeneratorid="categoryToolTipGenerator"></cewolf:map>
</cewolf:img>

LinkGenerator xyLG = new XYItemLinkGenerator() {
    public String generateLink(Object data, int series, int item) {
      return "#Series " + series;
    }
  };
  pageContext.setAttribute("xyLinkGenerator", xyLG);

分享到:
评论
8 楼 di1984HIT 2014-07-13  
人怎么不见了?
7 楼 javaxiongxing 2011-11-23  
牛叉哥啊...
6 楼 tbest 2008-08-26  
pageContext.setAttribute("dataColor", dataColor); //记得要放起来噢
dataColor怎么来的?这些都要写在jsp页面上吗?看着好乱啊...能否麻烦你再写的清楚一点啊..拜托
5 楼 tbest 2008-08-25  
我没有用过jfreechart,我用cewolf画了个图,我想设置纵坐标的精度,怎么办呢?比如原来是0,5,10.15,20,现在我要改成0,6,12,18,24.麻烦你了..
4 楼 blu3leaf 2007-04-15  
请教一下 如何在自定义标签里pageContext.setAttribute后,在同页面用el表达式获得该属性?
3 楼 kimfly 2007-01-04  
有什么问题问
2 楼 yanglin0719 2006-12-29  
我的mail:jinlin_yang@uniproud.com
QQ:272067720
MSN:yanglin0719@hotmail.com
1 楼 yanglin0719 2006-12-29  
我最近正需要这个,可以和你交流叫流吗?

相关推荐

    cewolf-1.2.1.zip

    cewolf 帮助我们开发,给我们带来方便

    Cewolf web报表实例

    包含 Cewolf web报表开发完整实例

    Cewolf开发全攻略

    这里主要详细讲述了cewolf的用法发发发发发发发发发发发发发法案

    cewolf

    NULL 博文链接:https://ericfang.iteye.com/blog/255195

    cewolf-1.2.3

    Cewolf可以在一个基于Servlet/JSP的Web应用程序内部使用,基于JFreechart的,利用JFreechart的绘制引擎的开源项目。以在Web页中嵌入各种复杂的图形图表(如,直方图、饼图、棒图等等)。它提供了一个功能完备的标签库来...

    cewolf开发需要的jar文件

    本文件是开发cewolf时需要的jar文件,解压文件、然后放入WEB-INF的lib下,就OK

    jfreechart+cewolf的架包

    常用jar都有,是用来做报表图形的必备架包

    图形报表制作jar包:cewolf

    Cewolf,能用于开发web工程的Servlet或JSP等,用于制作比较复杂的统计图表.它能够在写比较少的java代码的情况下,显示JSP页面,通过设置图的特征,象颜色,线条,图形,大小,比例等等.

    cewolf-1.1.4

    cewolf标签目前为止最新版,可以用于JFreeChart图形展示

    cewolf-1.0-bundle-2 第三方生成图形

    cewolf-1.0-bundle-2 第三方生成图形 好东东

    cewolf应用

    NULL 博文链接:https://canofy.iteye.com/blog/410099

    Web报表开发技术-Cewolf开发技术实例

    j2ee技术结合web报表技术,使您 的web开发更加精彩,该实例展现了怎样在一个web程序开发中使用Cewolf 技术的实例, 想做这方面应用的朋友可以参考一下!!

    flex实战报表:jFreeChart,cewolf,iText.doc

    flex实战报表:jFreeChart,cewolf,iText.doc

    开放源代码作品与Web图表编程

    因为Cewolf的图表生成和渲染引擎实际是调用JFreeChart的图表生成及渲染引擎,因此本章将详尽讲解JFreeChart这个Web图表生成引擎的安装、配置及使用方法。在掌握JFreeChart之后,我们再讲解Cewolf的安装、配置及使用...

    Cewolf:用于在网页中显示图表的JSP标记库-开源

    Cewolf是用于各种图表的标记库。 它使每个JSP都可以轻松地嵌入图表图像。 Servlet容器中运行的任何Web应用程序都可以使用它。 无需Java scriplet代码即可定义图表。

    精通Java Web动态图表编程

    通过Java Applet、Java Servlet、JSP、JavaBean以及借助开源软件JFreeChart及Cewolf动态图表生成引擎等多种方式开发Web动态图表,还详解了如何设计Web动态图表生成引擎,并将其封装成JavaBean,以达到高效、重复使用...

Global site tag (gtag.js) - Google Analytics