展开全部

JSP页面中嵌入动态图表的两种方32313133353236313431303231363533e59b9ee7ad9431333365636562法 :在JSP页面中插入Applet小程序 ;通过JavaBean动态生成图像。

JSP是一种广泛应用的网页设计技术 ,它是一种HTML和Java脚本混合的编程技术 ,它结合了HTML的静态特性和Java语言的动态能力 ,因此用它进行动态网页设计非常方便。在进行图像处理时 ,一般处理静态图片非常容易 ,但是 ,在实际应用中常常需要动态地在网页中生成二维的图形.

基于JFreeChart开发的一个时序图的绘制。代码如下:

实例中createDataset()方法用于创建数据集合对象。时序图的数据集合与其他数据集合不同,它需要添加一个时间段内的所有数据,通常采用TimeSeries类进行添加。该实例中通过Math类的random()方法进行随机生成。

import java.awt.*;

import java.awt.event.ActionEvent;

import

java.awt.event.ActionListener;

import java.io.BufferedInputStream;

import

java.io.DataInputStream;

import java.io.FileOutputStream;

import

java.io.IOException;

import java.net.URL;

import

java.net.URLConnection;

import java.text.DateFormat;

import

java.text.ParseException;

import java.text.SimpleDateFormat;

import

java.util.Calendar;

import java.util.Date;

import java.util.Random;

import javax.swing.JApplet;

import javax.swing.Timer;

import org.jfree.chart.*;

import

org.jfree.chart.annotations.CategoryTextAnnotation;

import

org.jfree.chart.axis.CategoryAnchor;

import

org.jfree.chart.axis.CategoryAxis;

import

org.jfree.chart.axis.CategoryLabelPositions;

import

org.jfree.chart.axis.DateAxis;

import

org.jfree.chart.axis.DateTickUnit;

import

org.jfree.chart.axis.DateTickUnitType;

import

org.jfree.chart.axis.ValueAxis;

import

org.jfree.chart.labels.StandardCategoryItemLabelGenerator;

import

org.jfree.chart.plot.CategoryPlot;

import

org.jfree.chart.plot.PlotOrientation;

import

org.jfree.chart.plot.XYPlot;

import

org.jfree.chart.renderer.category.BarRenderer;

import

org.jfree.chart.title.TextTitle;

import

org.jfree.data.category.CategoryDataset;

import

org.jfree.data.category.IntervalCategoryDataset;

import org.jfree.chart.axis.NumberAxis;

import

org.jfree.data.category.DefaultCategoryDataset;

import

org.jfree.data.gantt.Task;

import org.jfree.data.gantt.TaskSeries;

import

org.jfree.data.gantt.TaskSeriesCollection;

import

org.jfree.data.time.Day;

import org.jfree.data.time.Second;

import

org.jfree.data.time.TimeSeries;

import

org.jfree.data.time.TimeSeriesCollection;

import

org.jfree.data.xy.XYDataset;

public class shixutu extends JApplet {

//PLOT_FONT是一静态的字体常量对象,使用此对象可以避免反复用到的字体对象被多次创建

private static final Font PLOT_FONT = new Font("黑体", Font.ITALIC ,

18);

JFreeChart chart;

//创建数据动态更新的监听

class DataGenerator extends Timer

implements ActionListener {

private static final long serialVersionUID =

3977867288743720504L;

String

equID;

//设备ID号

int

totalTask;

//任务数

String[][]

strTask;

//任务情况

public void

actionPerformed(ActionEvent actionevent) {

addTotalObservation();

} DataGenerator()

{

super(1000,

null);

addActionListener(this);

System.out.println("super");

}

}

//将更新的数据添加到chart中

private void addTotalObservation()

{

System.out.println("addTotalObservation");

//设置新的数据集

chart.getXYPlot().setDataset(createDataset());

//通知Jfreechart

数据发生了改变,重新绘制柱状图

if

(chart != null)

{

chart.fireChartChanged();

}

}

private static void

processChart(JFreeChart chart)

{

//设置标题字体

chart.getTitle().setFont(new Font("隶书", Font.BOLD,

26));

//设置背景色

chart.setBackgroundPaint(new

Color(252,175,134));

XYPlot plot = chart.getXYPlot();

//获取图表的绘制属性

plot.setDomainGridlinesVisible(false);

//设置网格不显示

//获取时间轴对象

DateAxis dateAxis = (DateAxis)

plot.getDomainAxis();

dateAxis.setLabelFont(PLOT_FONT);

//设置时间轴字体

//设置时间轴标尺值字体

dateAxis.setTickLabelFont(new

Font("宋体",Font.PLAIN,12));

dateAxis.setLowerMargin(0.0);

//设置时间轴上显示的最小值

//获取数据轴对象

ValueAxis valueAxis =

plot.getRangeAxis();

valueAxis.setLabelFont(PLOT_FONT);

//设置数据字体

DateFormat format = new SimpleDateFormat("mm分ss秒");

//创建日期格式对象

//创建DateTickUnit对象

DateTickUnit dtu = new

DateTickUnit(DateTickUnitType.SECOND,30,format);

dateAxis.setTickUnit(dtu);

//设置日期轴的日期标签 } //将结果输出在文件中

private static

void writeChartAsImage(JFreeChart chart)

{

FileOutputStream fos_jpg =

null;

try

{

fos_jpg = new

FileOutputStream("D:\\test\\shixutu.jpg");

ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 400, 300,

null);

} catch (Exception e)

{

e.printStackTrace();

} finally

{

try

{

fos_jpg.close();

} catch (Exception e)

{

}

}

}

//创建数据集合对象

public static XYDataset createDataset()

{

//实例化TimeSeries对象

TimeSeries timeseries = new

TimeSeries("Data");

Second second = new Second();

//实例化Day

double d =

50D;

//添加一年365天的数据

for (int i = 0; i < 500; i++)

{

d = d + (Math.random() - 0.5) * 10;

//创建随机数据

timeseries.second(day, d);

//向数据集合中添加数据

second = (Second)

second.next();

}

TimeSeriesCollection timeSeriesCollection =

new

TimeSeriesCollection(timeseries);

//返回数据集合对象

return timeSeriesCollection; } //Applet程序初始化

public void init()

{

// 1.

得到数据

XYDataset dataset =

createDataset();

// 2.

构造chart

chart =

ChartFactory.createTimeSeriesChart(

"时序图示范", //

图表标题

"时间", //

目录轴的显示标签--横轴

"数值", //

数值轴的显示标签--纵轴

dataset, //

数据集

false,

false, //

是否生成工具

false //

是否生成URL链接

);

// 3.

处理chart中文显示问题

processChart(chart);

// 4.

chart输出图片

//writeChartAsImage(chart);

// 5. chart

以swing形式输出

//6.使用applet输出

ChartPanel chartPanel = new

ChartPanel(chart);

chartPanel.setPreferredSize(new

java.awt.Dimension(800,500));

getContentPane().add(chartPanel); (new

DataGenerator()).start();

}

public void

paint(Graphics g)

{

if

(chart != null)

{

chart.draw((Graphics2D) g,

getBounds());

}

}

public void destroy() {

}

}

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

把mysql数据展示为图表_怎么从数据库中调出数据并生成动态图表?相关推荐

  1. mysql杠杆加号什么意思_对tb_book表中的数据,按ID序号进行升序排列,查询语句是什么?_学小易找答案...

    [单选题]修改数据库表结构用以下哪一项 ( ) [单选题]对于一个微小物理量,通常采用将其进行放大的方法实现测量,以下哪个不是物理实验方法? [单选题]扭摆实验中,为了测出金属匀质细杆绕质心对称轴的转 ...

  2. 数据透视表 筛选_筛选器选择中的数据透视图标题

    数据透视表 筛选 Instead of adding a static title to your Pivot Chart, use a worksheet formula to create a d ...

  3. python将数据写入excel_【Python】将数据库中的数据查询出来自动写入excel文档

    近期每天都要监控一个数据.第一个版本是这样的: 每天新增一个文档来汇总这个数据.这样搞了几天之后,过了一个周末,过来突然发现数据变多了很多,这个时候要调整策略,直接一个文档汇总出要的数据就可以了. 这 ...

  4. 大数据展示html模板_澳门媒体参观国家大数据(贵州)综合试验区展示中心

    多彩贵州网讯(记者 彭典)11月22日,来自澳门日报.澳广视等14家澳门主流媒体"脱贫攻坚贵州行"主题采访团来到最后一站--国家大数据(贵州)综合试验区展示中心(以下简称" ...

  5. mysql 字段必填 属性_如何判断数据库中的字段是否具有必填属性(50分)

    你试试用SQLDMO吧 提供如下供参考 Option Explicit Dim dd As SQLDMO.Database Dim ss As New SQLDMO.SQLServer Dim tt ...

  6. python实现决策树数据直接赋值导入_决策树在python中的数据实现

    我为python决策树算法实现完成了以下代码:from csv import reader def load_csv(filename): file = open(filename, "rb ...

  7. python 图表_用 Python 让你的数据图表动起来

    在读技术博客的过程中,我们会发现那些能够把知识.成果讲透的博主很多都会做动态图表.他们的图是怎么做的?难度大吗? 这篇文章就介绍了 Python 中一种简单的动态图表制作方法. 数据暴增的年代,数据科 ...

  8. flask查询mysql数据展示_flask再学习-思考之怎么从数据库中查询数据在页面展示!...

    看别人视频觉得很简单,要自己做蒙蔽了!这样子.NO! 1. 流程: 首先要有和数据库连接的驱动!一般有PYMySQL mysqlclient 等 使用扩展Flask-SQLAlchemy 获得orm对 ...

  9. jsp在mysql中删除数据_如何在jsp页面中删除数据库中的数据

    如何在jsp页面中删除数据库中的数据 各位大虾! 我想在jsp页面上写一个按钮功能,从而动态的删除数据库中的一行数据. 不知道怎么实现 这是我写的一段代码 数据库是MySql UserBean p3= ...

  10. 如何把MySql数据库中的数据导入到MyCat集群中_---Linux运维工作笔记050

    我这里,单个MySql数据表的大小已经超过20GB了,单表8000多万条数据,马上 上亿了,这个时候我,搭建了一个MyCat集群解决的,一个写库,11个读库这样来做的. 提高查询效率.但是搭建完以后, ...

最新文章

  1. 2017年深度学习必读31篇论文(附下载地址)
  2. Git与Github操作指南(入门)
  3. .NET WebBrowser不与IE或其他进程共享cookie(WebBrowser独立cookie方法)
  4. 老笔记整理四:字符串的完美度
  5. ZeroMQ全面介绍
  6. XSLT实现XML无极限树(精简版)[二] 解决没有递归出节点属性值总和的问题(JS实现)...
  7. Java网络编程之Socket和ServerSocket详解
  8. [生活]我短暂的股票生涯
  9. 图邻接表拓扑排序算法c语言完整,在用邻接表表示图时,拓扑排序算法时间复杂度为()...
  10. 单元格自适应宽度_Excel – 合并单元格时,如何同时保留每个单元格的内容?...
  11. Python常用小技巧总结
  12. 中国GBA模拟器先驱李可文不幸去世
  13. Unity 高级程序员应该具备怎样的能力?要怎样成长为 Unity 高级程序员?
  14. jersey文件服务器,通过jersey实现客户端图片上传
  15. 嵌入式编程规范与原则
  16. 读《纳瓦尔宝典》感想
  17. 厉害了!腾讯又一开源力作发布!
  18. 寂寂的流年,时光日渐青翠
  19. 学c语言要掌握的英语单词,学习C语言需要理解的英语单词
  20. 正则验证连续重复字符、连续递增递减数字

热门文章

  1. 傲梅分区助手 linux,无损分区数据,调整分区大小软件:傲梅分区助手
  2. python下载安装教程-Python下载并安装图形教程[超级详细]
  3. 数值转换:二进制、八进制、十六进制转换为十进制
  4. PHP 微信小程序生成二维码
  5. Web全栈工程师应该会什么?
  6. 在线定时任务表达式生成连接
  7. 按键精灵定位坐标循环_[按键精灵手机版教程]DNF遍历背包卖物
  8. IDEA 格式化XML命令
  9. 在大多数情况下病毒入侵计算机系统以后,网络支付与安全练习题库
  10. CANTest软件安装成功经验