package com.MonKey.dao.impl;
import java.awt.Color;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import org.hibernate.SessionFactory;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.MonKey.dao.ElecDayDao;
import com.MonKey.dao.ElecHourCurveDao;
import com.MonKey.entity.ElecTranhour;
public class ElecHourCurveDaoImpl implements ElecHourCurveDao {
private HibernateTemplate template;
public void setSessionFactory(SessionFactory session) {
this.template = new HibernateTemplate(session);
}
public String getImageUrl(boolean a,boolean b,boolean c,String id) {
String urlstr="";
try {
List list= template.find("from ElecTranhour where id.elecTranid=?",id);
urlstr= this.getImages(a, b, c, list);
} catch (IOException e) {
e.printStackTrace();
}
return urlstr;
}
//产生小时的电流或者电压数据又或者功率
public String getImages(boolean a,boolean b,boolean c, List<ElecTranhour> list) throws IOException{
String title = "小时电流数据走势图";
// 曲线图X轴提示
String domain = "时间段";
// 曲线图Y轴提示
String range = "电流数据";
XYSeries xsa = new XYSeries("A相电流");
// 创建时间数据源,每一个TimeSeries在图上是一条曲线
XYSeries xsb = new XYSeries("B相电流");
// 创建时间数据源,每一个TimeSeries在图上是一条曲线
XYSeries xsc = new XYSeries("C相电流");
for (int j = 0; j < list.size(); j++) {
ElecTranhour t= list.get(j);
Date date= t.getId().getElecHdate();
//电流数据图
xsa.add(date.getHours()+j,t.getElecAcurrent());
xsb.add(date.getHours()+j,t.getElecBcurrent());
xsc.add(date.getHours()+j,t.getElecCcurrent());
}
// 时间曲线数据集合
XYSeriesCollection xysc = new XYSeriesCollection();
xysc.removeAllSeries();
if(a){
xysc.addSeries(xsa);
}
if(b){
xysc.addSeries(xsb);
}
if(c){
xysc.addSeries(xsc);
}
//时间曲线元素
JFreeChart chart = ChartFactory.createXYLineChart(title, domain, range, xysc,PlotOrientation.VERTICAL,true,true,false);
XYPlot xyplot=(XYPlot)chart.getPlot();
XYLineAndShapeRenderer xyl=(XYLineAndShapeRenderer) xyplot.getRenderer();
//判断
if(a){
xyl.setSeriesPaint(0, new Color(255,0,0));
if(b){
xyl.setSeriesPaint(1, new Color(0,0,255));
if(c)
xyl.setSeriesPaint(2, new Color(0,255,0));
}else{
if(c)
xyl.setSeriesPaint(1, new Color(0,255,0));
}
}else{
if(b){
xyl.setSeriesPaint(0, new Color(0,0,255));
if(c)
xyl.setSeriesPaint(1, new Color(0,255,0));
}else{
if(c)
xyl.setSeriesPaint(0, new Color(0,255,0));
}
}
//创建文件并将图片地址传递到页面
String filename = ServletUtilities.saveChartAsPNG(chart,600,300,
null,null);
String graphURL = "../displayChart?filename="+ filename;
return graphURL;
}
}
分享到:
相关推荐
Java 画图板程序的结构主要包含了以下几个部分: (1)主窗口(JFrame):用于显示画板的主窗口。 (2)工具栏(JToolBar):提供了基本的绘图工具,如画笔、直线、椭圆、矩形等。 (3)画板(DrawCanvas):用于...
7. **图像保存与打开**:保存功能可能使用了`java.awt.image.BufferedImage`类来保存用户的画作到磁盘,以图片格式(如JPEG或PNG)存储。打开功能则读取这些图片文件,将它们加载到`BufferedImage`对象中,并在画布...
在Java编程语言中,模拟画图是一个有趣且实用的领域,尤其对于开发用户界面和图形应用程序的程序员来说。Java提供了一套强大的图形库,使得创建类似Windows画图这样的应用程序成为可能。下面我们将深入探讨如何使用...
总的来说,这个Java版本的画图小程序是一个基础的图形界面应用,展示了Java Swing库在构建桌面应用上的能力,以及Java 2D API在图形绘制方面的强大功能。虽然目前的功能较为基础,但开发者计划在未来的更新中加入...
总的来说,"Java简易画图板"项目涵盖了Java GUI编程、图形绘制、事件处理以及基础的用户交互设计等多个方面,是学习和实践Java图形编程的一个良好实例。通过这个项目,开发者可以深入了解Java在图形应用中的应用,...
这类软件通常使用Java的AWT(Abstract Window Toolkit)或Swing库来构建界面和处理图形绘制。下面我们将深入探讨Java GUI画图软件的相关知识点。 1. **Java GUI基础** Java GUI是Java编程语言中的一个关键部分,...
总结来说,这个"画图工具JAVA源代码"项目涵盖了Java基础、GUI编程、事件处理、Java 2D绘图以及文件I/O等多方面的知识。通过学习和研究这个项目,开发者不仅可以提升Java编程技能,还能了解如何创建一个实际的图形...
6. **保存和加载图片**:为了实现保存和加载功能,开发者可能使用了Java的图像I/O库(javax.imageio),如`ImageIO.write()`方法来保存用户的作品为图片文件,`ImageIO.read()`来加载已有的图片。 7. **用户交互**...
本项目名为“用Java开发的画图板”,其目标是实现一个简单易用的画图工具,支持用户绘制点、直线、矩形、圆形以及三角形等基本形状。 首先,`Painter.java`文件很可能是这个程序的核心代码,它可能包含了主类,用于...
在标签中,“java画图软件”指出了这个项目的主要功能,即使用Java进行图像编辑。画图软件通常会包含基本的绘图工具,如画笔、直线、矩形、椭圆、填充、擦除等,以及颜色选择、撤销/重做操作等功能。这些功能的实现...
综上所述,这个“JAVA画图程序”可能包含了上述一些或全部的Java图形编程概念和技术,对于学习和实践Java图形界面开发的初学者来说,是一个宝贵的资源。通过解压和研究这些文件,你可以更深入地了解Java如何实现图形...
1. **图形绘制**:在Java中,我们可以使用`Graphics2D`类来进行图形绘制。它继承自`Graphics`,提供了更多的高级特性,如旋转、缩放、抗锯齿等。在`JPanel`的`paintComponent(Graphics g)`方法中,我们可以获取到`...
Java画图程序是一种基于Java编程语言开发的图形用户界面(GUI)应用,它允许程序员创建和展示各种图形。在这个特定的“java画图程序(附源码).rar”压缩包中,包含了实现画图功能的源代码,使得学习者或开发者能够...
以上就是关于“drawingTool_java.rar”压缩包中Java画图程序的一些关键知识点。这个程序不仅展示了GUI编程的基本原理,还涉及到图形绘制、事件处理、用户交互等多个方面的内容,是学习Java桌面应用开发的一个良好...
这个程序通常会使用Java的Swing或JavaFX库来创建交互式的画布,允许用户进行基本的绘图操作,如选择颜色、线条宽度,以及绘制点、线、形状等。 首先,我们要了解Java Swing库。Swing是Java的标准GUI工具包,它提供...
而“画图程序”很显然是这个Java画图应用的可执行文件,可能是一个`.jar`文件,可以通过Java虚拟机运行。 总的来说,这个项目提供了一个学习和实践Java图形编程的实例,用户可以通过阅读代码、运行程序和查看说明...
本项目名为"JAVA简易画图工具",其核心是利用Java的Graphics2D API来实现基本的绘图功能,包括画线、画圆、画矩形,并且提供了颜色选择,便于用户进行创意创作或学习实践。 Graphics2D是Java 2D API的一部分,它是...
为了提供类似Windows画图板的橡皮擦功能,Java画图板应用可能实现了两种模式:一种是使用特定的橡皮擦工具,另一种是将画笔颜色设置为背景色,从而达到擦除的效果。此外,添加形状绘制功能,如矩形、圆形和多边形,...
2. **图形绘制**: 在Java中,我们可以使用`java.awt.Graphics`类及其子类`java.awt.Graphics2D`来执行图形绘制。这些类提供了大量的方法,如`drawLine()`, `drawRect()`, `drawOval()`, `fillPolygon()`等,用于在...
总的来说,这个Java画图板项目是一个集多功能与美观界面于一体的软件,展示了Java在GUI应用开发中的强大能力。其丰富的图形操作和优秀的交互设计,使其成为学习和实践Java GUI编程的一个良好实例。