输出带提示和超链接的jfreechart矢量图

 

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.io.FileOutputStream;
import java.util.Iterator;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.entity.ChartEntity;
import org.jfree.chart.entity.EntityCollection;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.urls.CategoryURLGenerator;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

import com.hg.book.Book;
import com.hg.book.BookGraphics;


public class Test2 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            //创建BookGraphics
            BookGraphics bg = new BookGraphics(new FileOutputStream("c:/test.jar"));
            //设置查看器属性
            bg.setViewerBarVisible(false);
            bg.setViewerNavVisible(false);
            bg.setViewerType(BookGraphics.VIEWER_TYPE_SLIDE);
            bg.setViewerAnimateEnable(false);
            bg.setViewerMAR(false);
            //添加book
            Book book = bg.addBook(400, 300);
            //添加页
            Graphics2D g = book.addPage();
            //绘制jfreechart
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            dataset.addValue(5, "北京", "");
            dataset.addValue(3  , "天津", "");
            dataset.addValue(3, "太原", "");
            dataset.addValue(10, "上海", "");
            dataset.addValue(13, "重庆", "");
            JFreeChart jfreechart = ChartFactory.createBarChart("城市温度对比", "城市", "温度", dataset,
                    PlotOrientation.VERTICAL, true, true, true);
            jfreechart.setBackgroundPaint(Color.WHITE);
            CategoryItemRenderer renderer1 = ((CategoryPlot) jfreechart.getPlot()).getRenderer();
            renderer1.setItemLabelGenerator(new  StandardCategoryItemLabelGenerator());  
            renderer1.setItemLabelsVisible(true); //显示每个柱子上的数据
            renderer1.setItemURLGenerator(new MyCategoryURLGenerator());
            ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
            jfreechart.draw(g, new Rectangle2D.Double(0, 0, 400, 300), info);
            //添加tooltip和超链接
            EntityCollection entities = info.getEntityCollection();
            if (entities != null) {
                Iterator iterator = entities.iterator();
                ChartEntity entity;
                while (iterator.hasNext()) {
                    entity = (ChartEntity) iterator.next();
                    if (entity.getToolTipText() != null && entity.getToolTipText().length() > 0) {
                        Book.addToolTip(g, entity.getToolTipText(), entity.getArea());
                    }
                    if (entity.getURLText() != null && entity.getURLText().length() > 0) {
                        Book.addHref(g, entity.getURLText(), entity.getArea());
                    }
                }
            }
            //关闭
            bg.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
class MyCategoryURLGenerator implements CategoryURLGenerator {
    public String generateURL(CategoryDataset arg0, int arg1, int arg2) {
        return "http://php.weather.sina.com.cn/search.php?c=1&dpc=1&city=" + arg0.getRowKey(arg1);
    }
}

<script type="text/javascript"> </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值