google js实现Dashboard???? 通过Google Chart Tools提供的图表功能实现如下:? 地址如下:? http://code.go
google js 实现Dashboard
???? 通过Google Chart Tools提供的图表功能实现如下:
? 地址如下:
? http://code.google.com/intl/zh-CN/apis/chart/interactive/docs/gallery/gauge.html
?
效果如下图:

代码如下:
?
package com.easyway.dashbroad;import java.awt.Color;import java.awt.Font;import java.awt.GradientPaint;import java.awt.Point;import java.io.FileOutputStream;import java.io.IOException;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.chart.plot.dial.DialBackground;import org.jfree.chart.plot.dial.DialCap;import org.jfree.chart.plot.dial.DialPlot;import org.jfree.chart.plot.dial.DialTextAnnotation;import org.jfree.chart.plot.dial.DialValueIndicator;import org.jfree.chart.plot.dial.StandardDialFrame;import org.jfree.chart.plot.dial.StandardDialRange;import org.jfree.chart.plot.dial.StandardDialScale;import org.jfree.data.general.DefaultValueDataset;import org.jfree.ui.GradientPaintTransformType;import org.jfree.ui.StandardGradientPaintTransformer;/** * * @Title: * @Description: JFreeChart实现Dashboard功能 * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2011-4-11 * @author longgangbai * @version 1.0 */public class DashboardApp {public String getDial(String warnName,double warnValue) { // 数据集合对象 此处为DefaultValueDataset DefaultValueDataset dataset = new DefaultValueDataset(); // 当前指针指向的位置,即:我们需要显示的数据 dataset = new DefaultValueDataset(warnValue); // 实例化DialPlot DialPlot dialplot = new DialPlot(); dialplot.setView(0.0D, 0.0D, 1.0D, 1.0D); // 设置数据集合 dialplot.setDataset(dataset); // 开始设置显示框架结构 StandardDialFrame simpledialframe = new StandardDialFrame(); simpledialframe.setBackgroundPaint(Color.lightGray);//Color.lightGray //仪表盘边框内部颜色 simpledialframe.setForegroundPaint(Color.darkGray);//Color.darkGray //仪表盘边框外部颜色 dialplot.setDialFrame(simpledialframe); // 结束设置显示框架结构,表盘颜色 从最上部 白色 过渡到最下部的蓝色 GradientPaint gradientpaint = new GradientPaint(new Point(), new Color(229,229,229), new Point(), new Color(229,229,229)); DialBackground dialbackground = new DialBackground(gradientpaint); dialbackground.setGradientPaintTransformer(new StandardGradientPaintTransformer(GradientPaintTransformType.VERTICAL)); dialplot.setBackground(dialbackground); // 设置显示在表盘中央位置的信息 DialTextAnnotation dialtextannotation = new DialTextAnnotation(warnName); dialtextannotation.setFont(new Font("宋体", 1, 16)); dialtextannotation.setRadius(0.69999999999999996D); dialplot.addLayer(dialtextannotation); // 设置刻度范围(绿色) if(warnValue==0){ StandardDialRange standarddialrange2 = new StandardDialRange(0D, 100D,Color.green); standarddialrange2.setInnerRadius(0.52000000000000002D); standarddialrange2.setOuterRadius(0.55000000000000004D); dialplot.addLayer(standarddialrange2); }else if(warnValue>0&&warnValue<=100){// 设置刻度范围(橘黄色) StandardDialRange standarddialrange1 = new StandardDialRange(0D, 100D,Color.orange); standarddialrange1.setInnerRadius(0.52000000000000002D); standarddialrange1.setOuterRadius(0.55000000000000004D); dialplot.addLayer(standarddialrange1); }else if(warnValue>100&&warnValue<=1000){// 设置刻度范围(红色) StandardDialRange standarddialrange = new StandardDialRange(0D, 1000D,Color.red); standarddialrange.setInnerRadius(0.52000000000000002D); standarddialrange.setOuterRadius(0.55000000000000004D); dialplot.addLayer(standarddialrange); }else if(warnValue>1000){// 设置刻度范围(红色) StandardDialRange standarddialrange = new StandardDialRange(0D, 10000D,Color.red); standarddialrange.setInnerRadius(0.52000000000000002D); standarddialrange.setOuterRadius(0.55000000000000004D); dialplot.addLayer(standarddialrange); } //指针指示框 ,仪表盘中间的小方框 DialValueIndicator dialvalueindicator = new DialValueIndicator(0); dialvalueindicator.setFont(new Font("宋体", 1, 14)); dialvalueindicator.setOutlinePaint(new Color(229,229,229)); dialvalueindicator.setBackgroundPaint(new Color(229,229,229)); dialvalueindicator.setRadius(0.39999999999999998D); //dialvalueindicator.setPaint(Color.red); dialplot.addLayer(dialvalueindicator); /* * StandardDialScale 方法 * 参数1 开始数值 类似手表 开始 0点 * 参数2 结束数值 类似手表 结束 12点 * 参数5 间隔差值 类似手表 间隔差值5分钟 * 参数6 间隔数量 类似手表 1点到2点 有4个间隔点 */ //如果 预警条数少于 100条,开度从 0 至 100 ,间隔 10 double startPosition=0D; //开度 0 double endPosition=100D; //开度 100 double skipValue=10D; //间隔 10 if(warnValue>100&&warnValue<1000){ endPosition=1000D; skipValue=100D; }else if(warnValue>=1000){ endPosition=10000D; skipValue=1000D; } //刻度盘设置 StandardDialScale standarddialscale = new StandardDialScale(startPosition, endPosition,-120D, -300D, skipValue, 4); standarddialscale.setTickRadius(0.88D);//设置半径 standarddialscale.setTickLabelOffset(0.14999999999999999D); standarddialscale.setTickLabelFont(new Font("Dialog", 0, 10));//刻度盘数字大小 // 注意是 dialplot.addScale()不是dialplot.addLayer() dialplot.addScale(0, standarddialscale); // 设置指针 org.jfree.chart.plot.dial.DialPointer.Pointer pointer = new org.jfree.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); // 3、设定参数输出结果,首先在 项目/WEB-INF/classes/,添加WarnImages文件夹 String filePath="D:/"+System.currentTimeMillis()+".jpeg";//动态文件名 相对 FileOutputStream file = null; try { file = new FileOutputStream(filePath); ChartUtilities.writeChartAsJPEG(file, 1.0f, jfreechart, 200, 200,null);//200,200 图片大小 } catch (IOException e) { e.printStackTrace(); } // 生成图片 finally { try { file.close();// 最后关闭文件流 } catch (IOException e) { e.printStackTrace(); } } return filePath;} public static void main(String[] args) { System.out.println(new DashboardApp().getDial("测试预警",80.0)); }}?
