欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JFreeChart动态画折线图的方法

程序员文章站 2023-12-21 13:44:58
本文实例为大家分享了jfreechart动态画折线图的具体代码,供大家参考,具体内容如下 每隔一秒画一次,一分钟后重新画 需要的jar包是:gnujaxp.jar,...

本文实例为大家分享了jfreechart动态画折线图的具体代码,供大家参考,具体内容如下

JFreeChart动态画折线图的方法

每隔一秒画一次,一分钟后重新画

需要的jar包是:gnujaxp.jar,jcommon-1.0.16.jar,jfreechart-1.0.13.jar

public class jfreezhexiantest{

 public static xyseries xycpuseries = new xyseries("cpu");

 public static int hundroud = 0;
 public static jfreechart jfreechart = null;

 public jpanel getcpujfreechart(){

  jfreechart = chartfactory.createxylinechart(
    null, null, null, createdataset1(),
    plotorientation.vertical, false, true, false);

  standardcharttheme mcharttheme = new standardcharttheme("cn");
  mcharttheme.setlargefont(new font("黑体", font.bold, 20));
  mcharttheme.setextralargefont(new font("宋体", font.plain, 15));
  mcharttheme.setregularfont(new font("宋体", font.plain, 15));
  chartfactory.setcharttheme(mcharttheme);

  jfreechart.setborderpaint(new color(0,204,205));
  jfreechart.setbordervisible(true);

  xyplot xyplot = (xyplot) jfreechart.getplot();

  // y轴
  numberaxis numberaxis = (numberaxis) xyplot.getrangeaxis();
  numberaxis.setlowerbound(0);
  numberaxis.setupperbound(100);
  numberaxis.settickunit(new numbertickunit(100d));
  // 只显示整数值
  numberaxis.setstandardtickunits(numberaxis.createintegertickunits());
  // numberaxis.setautorangeincludeszero(true);
  numberaxis.setlowermargin(0); // 数据轴下(左)边距 ­
  numberaxis.setminortickmarksvisible(false);// 标记线是否显示
  numberaxis.settickmarkinsidelength(0);// 外刻度线向内长度
  numberaxis.settickmarkoutsidelength(0);

  // x轴的设计
  numberaxis x = (numberaxis) xyplot.getdomainaxis();
  x.setautorange(true);// 自动设置数据轴数据范围
  // 自己设置横坐标的值
  x.setautotickunitselection(false);
  x.settickunit(new numbertickunit(60d));
  // 设置最大的显示值和最小的显示值
  x.setlowerbound(0);
  x.setupperbound(60);
  // 数据轴的数据标签:只显示整数标签
  x.setstandardtickunits(numberaxis.createintegertickunits());
  x.setaxislinevisible(true);// x轴竖线是否显示
  x.settickmarksvisible(false);// 标记线是否显示

  rectangleinsets offset = new rectangleinsets(0, 0, 0, 0);
  xyplot.setaxisoffset(offset);// 坐标轴到数据区的间距
  xyplot.setbackgroundalpha(0.0f);// 去掉柱状图的背景色
  xyplot.setoutlinepaint(null);// 去掉边框

  // chartpanel chartpanel = new chartpanel(jfreechart);
  // chartpanel.restoreautodomainbounds();//重置x轴

  chartpanel chartpanel = new chartpanel(jfreechart, true);

  return chartpanel;
 }

 /**
  * 该方法是数据的设计
  * 
  * @return
  */
 public static xydataset createdataset1() {
  xyseriescollection xyseriescollection = new xyseriescollection();
  xyseriescollection.addseries(xycpuseries);
  return xyseriescollection;
 }

 /**
  * 随机生成的数据
  */
 public static void dynamicrun() {
  int i = 0;
  while (true) {

   double factor = math.random()*100;

   hundroud = (int)factor;
   jfreechart.settitle("cpu的大小是:   "+hundroud+"%");
   jfreechart.gettitle().setfont(new font("微软雅黑", 0, 16));//设置标题字体

   xycpuseries.add(i, factor);

   try {
    thread.currentthread();
    thread.sleep(1000);
   } catch (interruptedexception e) {
    e.printstacktrace();
   }
   i++;
   if (i == 60){
    i=0;
    xycpuseries.delete(0, 59);
    continue;
   }
  }
 }

 public static void main(string[] args) {
  jfreezhexiantest jz = new jfreezhexiantest();
  jframe frame = new jframe();
  frame.setsize(700, 500);
  frame.getcontentpane().add(jz.getcpujfreechart(), borderlayout.center);

  frame.setvisible(true);
  frame.setlocationrelativeto(null); // 窗口居于屏幕正*
  frame.setdefaultcloseoperation(windowconstants.exit_on_close);
  dynamicrun();
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: