`
eagletony
  • 浏览: 42019 次
  • 来自: ...
社区版块
存档分类
最新评论

Jfreechart+ajax 实现动态仪表图 java代码

阅读更多
package demo;

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 java.net.URISyntaxException;

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;

public class Dial {
	public static String getDial(String warnName,String warnValueStr) {
		double warnValue;
		try{
			double tempDouble = Double.valueOf(warnValueStr);
			warnValue =tempDouble;
		}catch(Exception ex){
			ex.printStackTrace();
			warnValue=0;
		}
		
		DefaultValueDataset dataset = new DefaultValueDataset();
		dataset = new DefaultValueDataset(warnValue);
		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);
		simpledialframe.setForegroundPaint(Color.darkGray);
		dialplot.setDialFrame(simpledialframe);
		
		GradientPaint gradientpaint = new GradientPaint(new Point(),Color.lightGray, new Point(),Color.GRAY);
		
		DialBackground dialbackground = new DialBackground(gradientpaint);
		dialbackground.setGradientPaintTransformer(new StandardGradientPaintTransformer(GradientPaintTransformType.VERTICAL));
		dialplot.setBackground(dialbackground);
		dialplot.setBackgroundPaint(Color.CYAN);
		DialTextAnnotation dialtextannotation = new DialTextAnnotation(warnName);
		dialtextannotation.setFont(new Font("宋体", 1, 16));
		dialtextannotation.setPaint(Color.black);
		dialtextannotation.setRadius(0.69999999999999996D);
		dialplot.addLayer(dialtextannotation);
		

		if(warnValue==0){
			StandardDialRange standarddialrange2 = new StandardDialRange(0D, 100D,Color.cyan);
			standarddialrange2.setInnerRadius(0.52000000000000002D);
			standarddialrange2.setOuterRadius(1);
			dialplot.addLayer(standarddialrange2);	
		}else if(warnValue>0&&warnValue<=100){
		StandardDialRange standarddialrange1 = new StandardDialRange(0D, 100D,Color.yellow);
		standarddialrange1.setInnerRadius(0.52000000000000002D);
		standarddialrange1.setOuterRadius(1);
		dialplot.addLayer(standarddialrange1);
		}else if(warnValue>100&&warnValue<=1000){
			StandardDialRange standarddialrange = new StandardDialRange(0D, 1000D,new Color(251,57,36));
			standarddialrange.setInnerRadius(0.52000000000000002D);
			standarddialrange.setOuterRadius(1);
			dialplot.addLayer(standarddialrange);
		}else if(warnValue>1000){		
			StandardDialRange standarddialrange = new StandardDialRange(0D, 10000D,Color.red);
			standarddialrange.setInnerRadius(0.52000000000000002D);
			standarddialrange.setOuterRadius(1);
			dialplot.addLayer(standarddialrange);
		}
		
		
		DialValueIndicator dialvalueindicator = new DialValueIndicator(0);
		dialvalueindicator.setFont(new Font("宋体", 1, 14));		
		dialvalueindicator.setPaint(Color.cyan);
		dialvalueindicator.setOutlinePaint(Color.lightGray);
		dialvalueindicator.setBackgroundPaint(Color.GRAY);
		dialvalueindicator.setRadius(0.39999999999999998D);
		//dialvalueindicator.setPaint(Color.red);
		dialplot.addLayer(dialvalueindicator);

		
		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();
		pointer.setFillPaint(Color.red);
		pointer.setOutlinePaint(Color.red);
		pointer.setRadius(0.75D);
		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="";//绝对路径
		//String webPath="WarnImages/"+System.currentTimeMillis()+".jpeg";//动态文件名 相对
		String webPath="WarnImages/meter.jpeg";
		try {
			filePath = Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath();
			filePath =filePath.replace("WEB-INF/classes/", "");
			filePath += webPath;
			System.out.println(filePath);
		} catch (URISyntaxException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

	        
		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 webPath;
	}

	public static void main(String[] args) {
		//System.out.println(new Dial().getDial("测试","366"));
		System.out.println(String.valueOf(randomNum()));
		System.out.println(new Dial().getDial("测试",String.valueOf(randomNum())));
	}
	
	private static int  randomNum()   
	{      
	        System.out.println((int)(Math.random()*60+300));         
	        return (int)(Math.random()*60+80);   
	} 
}


package demo;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sinoufc.nms.mon.rmi.RMIClient;

public class DialServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public DialServlet() {
		
		super();
	}

	 public void service(HttpServletRequest request, HttpServletResponse response)   
     throws ServletException, IOException {   
		 int memoryUsedRate = 0;
	        try
	        {
	        	//memoryUsedRate = RMIClient.getRMIInterface().getInFlow("10.10..9.188",1);
	        	//memoryUsedRate = RMIClient.getRMIInterface().getInFlow("111", 1);
	        	System.out.println("memoryUsedRate="+memoryUsedRate);
	        }
	        catch(Exception ex)
	        {
	        	ex.printStackTrace();
	        }
	       // System.out.println(new Dial().getDial("测试",String.valueOf(memoryUsedRate)));
	        System.out.println(Dial.getDial("测试",String.valueOf(randomNum())));
	 }
	
	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	private static int  randomNum()   
	{      
	        System.out.println((int)(Math.random()*60+300));         
	        return (int)(Math.random()*60+80);   
	}  

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    JFreeChart+JSP实现统计图展示

    **JSP(JavaServer Pages)** 是一种动态网页技术,允许开发者在HTML中嵌入Java代码,从而实现服务器端的动态内容生成。在本案例中,JSP用于构建用户界面,接收用户请求,并将从数据库获取的数据传递给JFreeChart...

    S2SH+jfreechart+ajax动态生成统计图

    总结,通过S2SH框架、JFreeChart库和Ajax技术的结合,我们可以实现动态生成统计图表的功能,提供更直观的数据展示和交互体验。在实际应用中,可以根据需求调整图表类型、样式以及数据来源,以满足各种复杂的数据可视...

    java+jfreechart+struts 生成曲线图

    java+jfreechart+struts 生成曲线图 java+jfreechart+struts 生成曲线图 java jfreechart 曲线图 java jfreechart 曲线图 java jfreechart 曲线图 谁需要完整项目可以去http://download.csdn.net/source/2665347

    java+jfreechart+struts 生成柱状图

    java+jfreechart+struts 生成柱状图 java jfreechart 柱状图 java jfreechart 柱状图 谁需要完整项目可以去http://download.csdn.net/source/2665347

    JFreeChart+Struts2实践例子

    总的来说,JFreeChart和Struts2的结合使用,使得Java开发者能够方便地在Web应用中实现各种复杂的图表功能,从而提升数据可视化的质量和用户体验。这五种实践方法覆盖了从静态展示到动态交互,从直接输出到异步加载的...

    spring+struts2+hibernate+ajax+jfreechart 广告管理系统

    5. **JFreeChart库**:JFreeChart是一款开源的Java图表库,可以生成多种类型的图表,如折线图、柱状图、饼图等。在广告管理系统中,JFreeChart用于展示广告投放效果、数据分析等,帮助管理者直观地理解广告数据,...

    Struts2+JFreeChart+饼状图,柱状图,折线图

    Struts2是一个流行的Java Web开发框架,用于构建可维护、高效且易于扩展的企业级应用...通过这些步骤,开发者可以轻松地在Struts2应用中集成JFreeChart,实现动态数据图表的展示,从而提升应用程序的功能性和用户体验。

    jfreechart+cewolf的架包

    JFreeChart是一个用Java编写的开源图表库,它支持多种图表类型,包括折线图、柱状图、饼图、散点图、甘特图等。通过JFreeChart,开发者可以轻松地创建静态图表,并将其集成到Java应用程序、Web应用或Swing组件中。...

    jfreechart+applet三维图形实例

    JFreeChart是一个强大的Java图表库,它允许开发者创建多种类型的二维和三维图表,包括柱状图、饼图、线图、散点图等,并且支持自定义颜色、样式和动画效果。Applet是Java的一种小型应用程序,常用于网页中展示交互式...

    基于Java的学生成绩管理系统,Spring+Jquery UI+Ajax,优秀毕业设计源代码+答辩PPT,新手必看!

    Spring——java对象注入 Spring JDBC——数据库连接 Jquery UI——界面设计 JFreeChart——成绩分析 iText——成绩打印PDF格式 Ajax+Json——表单验证 系统登录用户: 学生用户(学号+密码+验证码) 教师用户(教师...

    flex+jfreechart+others 整合架包和配置

    Flex是Adobe公司开发的一种开放源代码的富互联网应用程序(Rich Internet Application,RIA)框架,用于构建具有动态图形、交互性和富媒体功能的Web应用。它主要基于ActionScript编程语言和MXML标记语言,使得开发者...

    java中关于JFreeChart实现实时曲线图

    在Java编程语言中,利用JFreeChart库实现实时曲线图是一种常见的数据可视化技术,尤其适用于需要实时监控或展示数据变化的应用场景。JFreeChart是一个开源的Java图表库,提供了丰富的图表类型和自定义选项,使得...

    jfreechart ajax 实时 股票图 表盘图

    **JFreeChart库详解** ...总的来说,JFreeChart结合Ajax能为金融应用提供强大的实时图表功能,帮助用户直观地跟踪和分析股票市场的动态。而通过不断的定制和优化,我们可以创造出更加符合业务需求的可视化解决方案。

    Spring+JFreeChart 自动生成统计图

    标题“Spring+JFreeChart 自动生成统计图”涉及的是在Java开发环境中,利用Spring框架和JFreeChart库来动态生成图表的技巧。这篇文章可能是介绍如何在Spring应用中集成JFreeChart,以便为数据可视化提供服务。 ...

    jfreechart+struts2 图形报表

    JFreeChart是一个强大的Java库,能够生成各种类型的图表,如柱状图、饼图、折线图等。而Struts2作为一款流行的MVC框架,它提供了方便的控制层处理机制。将JFreeChart与Struts2结合,可以方便地在Web应用程序中生成...

    JFreeChart+让横轴的标题竖着显示

    在Java编程环境中,JFreeChart库是一个非常强大的工具,用于创建各种类型的图表,如线图、柱状图、饼图等。在处理复杂的数据显示时,可能会遇到横轴标签过于密集,导致阅读困难的问题。本教程将详细介绍如何使用...

    struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合

    JFreeChart 是一个Java库,用于创建各种图表,如折线图、柱状图、饼图等。它为Java应用提供了丰富的图表绘制功能,可以在Web应用中用于数据分析和展示。 在这个"struts2+hibernate+spring+jfreechart+导出excel+...

    jfreeChart+ struts+数据库,柱形图开发,直接能用

    最后,压缩包中的**PicChart** 文件可能是项目中生成的柱形图图片文件或者用于展示柱形图的代码文件。如果是图片,它展示了应用实际生成的图形效果;如果是代码文件,可能是处理图表显示的Java或JSP文件,包含具体的...

Global site tag (gtag.js) - Google Analytics