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

利用jfreechart制作仪表盘

阅读更多

 

 

效果图如下:

 

 

 

 

 

jfreechart版本:

jfreechart 1.0.6

 

 

 

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.awt.Color,          
                org.jfree.chart.JFreeChart,               
                org.jfree.chart.servlet.ServletUtilities,                                                  
                java.awt.Font,
                java.awt.GradientPaint,
                org.jfree.data.general.DefaultValueDataset,
                org.jfree.experimental.chart.plot.dial.*,
                org.jfree.ui.StandardGradientPaintTransformer,
                org.jfree.ui.GradientPaintTransformType,
                java.awt.Point            
                "%>
<%

            //数据集合对象 此处为DefaultValueDataset
            DefaultValueDataset dataset = new DefaultValueDataset();
            //当前指针指向的位置,即:我们需要显示的数据
            dataset = new DefaultValueDataset(20D);
            //实例化DialPlot
            DialPlot dialplot = new DialPlot();
            dialplot.setView(0.0D, 0.0D, 1.0D, 1.0D);
            //设置数据集合
            dialplot.setDataset(dataset);
            //开始设置显示框架结构
            SimpleDialFrame simpledialframe = new SimpleDialFrame();
            simpledialframe.setBackgroundPaint(Color.lightGray);
            simpledialframe.setForegroundPaint(Color.darkGray);
            dialplot.setDialFrame(simpledialframe);
             //结束设置显示框架结构          
            GradientPaint gradientpaint = new GradientPaint(new Point(), new Color(255, 255, 255), new Point(), new Color(170, 170, 220));
            DialBackground dialbackground = new DialBackground(gradientpaint);
            dialbackground.setGradientPaintTransformer(new StandardGradientPaintTransformer(GradientPaintTransformType.VERTICAL));
            dialplot.setBackground(dialbackground);
            //设置显示在表盘中央位置的信息
            DialTextAnnotation dialtextannotation = new DialTextAnnotation("温度");
            dialtextannotation.setFont(new Font("Dialog", 1, 14));
            dialtextannotation.setRadius(0.69999999999999996D);
            dialplot.addLayer(dialtextannotation);
            DialValueIndicator dialvalueindicator = new DialValueIndicator(0, "c");
            dialplot.addLayer(dialvalueindicator);
            //根据表盘的直径大小(0.88),设置总刻度范围
            StandardDialScale standarddialscale = new StandardDialScale(-40D, 60D, -120D, -300D);
            standarddialscale.setTickRadius(0.88D);
            standarddialscale.setTickLabelOffset(0.14999999999999999D);
            standarddialscale.setTickLabelFont(new Font("Dialog", 0, 14));
            //主意是 dialplot.addScale()不是dialplot.addLayer()
            dialplot.addScale(0, standarddialscale);
            //设置刻度范围(红色)
            StandardDialRange standarddialrange = new StandardDialRange(40D, 60D, Color.red);
            standarddialrange.setInnerRadius(0.52000000000000002D);
            standarddialrange.setOuterRadius(0.55000000000000004D);
            dialplot.addLayer(standarddialrange);
            //设置刻度范围(橘黄色)          
            StandardDialRange standarddialrange1 = new StandardDialRange(10D, 40D, Color.orange);
            standarddialrange1.setInnerRadius(0.52000000000000002D);
            standarddialrange1.setOuterRadius(0.55000000000000004D);
            dialplot.addLayer(standarddialrange1);
            //设置刻度范围(绿色)              
            StandardDialRange standarddialrange2 = new StandardDialRange(-40D, 10D, Color.green);
            standarddialrange2.setInnerRadius(0.52000000000000002D);
            standarddialrange2.setOuterRadius(0.55000000000000004D);
            dialplot.addLayer(standarddialrange2);
            //设置指针
            org.jfree.experimental.chart.plot.dial.DialPointer.Pointer pointer = new org.jfree.experimental.chart.plot.dial.DialPointer.Pointer();
            dialplot.addLayer(pointer);
            //实例化DialCap
            DialCap dialcap = new DialCap();
            dialcap.setRadius(0.10000000000000001D);
            dialplot.setCap(dialcap);
            //生成chart对象
            JFreeChart jfreechart = new JFreeChart(dialplot);
            //设置标题
            jfreechart.setTitle("设备取水温度采样");
      
            String filename = ServletUtilities.saveChartAsPNG(jfreechart, 400, 300, session);
            //调用DisplayChart(配置在web.xml中),生成图形
            String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
      
      
       
%>

<table width="100%">
    <tr>
        <td align="center">
            <!-- 生成图形 -->
            <img src="<%= graphURL %>" width=400 height=300 border=0  alt="">
        </td>
    </tr>
</table>

 

 

 

分享到:
评论
9 楼 带个回家 2012-03-07  
wosidanyang 写道
跑起来是跑起来了,为什么没图片

大哥,肯定没有撒,楼主提供的代码是测试。你得搞现实啊。。。不懂再问我,如果我不在线,请留言:http://developer.aiwgame.com/ask-question
8 楼 wosidanyang 2012-03-02  
跑起来是跑起来了,为什么没图片
7 楼 带个回家 2012-02-22  
要jar包的找我,或者自己下载:
PS:本人只罗列自己全部的jar包,肯定跑得起,至于多余的,请你们自己慢慢测试哈
http://developer.aiwgame.com
[url]gnujaxp.jar
iText-2.1.5.jar
jcommon-1.0.17.jar
jfreechart-1.0.14-experimental.jar
jfreechart-1.0.14-swt.jar
jfreechart-1.0.14.jar
junit.jar
servlet.jar
swtgraphics2d.jar[/url]
6 楼 pshcong 2012-01-21  
程序是很漂亮的,但没有提供完全的源代码,导致学习者无法实现,例如DialPlot类、StandardDialRange类等好几个类的代码都无法看到。学不到实质的学习内容,希望加强。
5 楼 iro 2011-10-17  
跑不起来啊,官方jar包才1.0.13.不知道你这个1.0.6从哪下载过来的?
4 楼 yinlongfei 2011-05-10  
两个字“漂亮”
3 楼 lenves 2009-09-23  
老兄,看到版本了 呵呵,  但是我运行怎么没有图片啊,就是的叉叉了
2 楼 lenves 2009-09-23  
您好  你这jfreechart是那个版本的啊
1 楼 yangpeihai 2009-01-19  
谢谢,不知道前辈是否有研究jfreeChart和dwr结合,有的话,请别吝惜赐教,我的邮箱是:472579211@qq.com,先谢谢啦!

相关推荐

Global site tag (gtag.js) - Google Analytics