利用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>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值