JFreeChart动态画折线图的方法

 更新时间:2018年06月19日 11:19:03   作者:聆听梦飞扬  
这篇文章主要为大家详细介绍了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();
 }
}

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

相关文章

  • Mybatis 入门之MyBatis环境搭建(第一篇)

    Mybatis 入门之MyBatis环境搭建(第一篇)

    Mybatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。这篇文章主要介绍了Mybatis入门第一篇之MyBaits环境搭建,需要的朋友参考下
    2016-12-12
  • Java实现获取某年某月第一天/最后一天的方法

    Java实现获取某年某月第一天/最后一天的方法

    这篇文章主要介绍了Java实现获取某年某月第一天/最后一天的方法,涉及java日期运算相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • java中的AWT事件处理问题

    java中的AWT事件处理问题

    这篇文章主要介绍了java中的AWT事件处理问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 如何使用SpringBoot进行优雅的数据验证

    如何使用SpringBoot进行优雅的数据验证

    这篇文章主要介绍了如何使用SpringBoot进行优雅的数据验证,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Springboot关于自定义stater的yml无法提示问题解决方案

    Springboot关于自定义stater的yml无法提示问题解决方案

    这篇文章主要介绍了Springboot关于自定义stater的yml无法提示问题及解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 使用Springboot整合Apollo配置中心

    使用Springboot整合Apollo配置中心

    这篇文章主要介绍了使用Springboot整合Apollo配置中心的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 深入理解java动态代理机制

    深入理解java动态代理机制

    本篇文章主要介绍了深入理解java动态代理机制,详细的介绍动态代理有哪些应用场景,什么是动态代理,怎样使用,它的局限性在什么地方?有兴趣的可以了解一下。
    2017-02-02
  • JAVA POI设置EXCEL单元格格式用法举例

    JAVA POI设置EXCEL单元格格式用法举例

    这篇文章主要给大家介绍了关于JAVA POI设置EXCEL单元格格式用法的相关资料,POI中可能会用到一些需要设置EXCEL单元格格式的操作,需要的朋友可以参考下
    2023-08-08
  • JAVA中的函数式接口Function和BiFunction详解

    JAVA中的函数式接口Function和BiFunction详解

    这篇文章主要介绍了JAVA中的函数式接口Function和BiFunction详解,JDK的函数式接口都加上了@FunctionalInterface注解进行标识,但是无论是否加上该注解只要接口中只有一个抽象方法,都是函数式接口,需要的朋友可以参考下
    2024-01-01
  • Java缩略图生成库之Thumbnailator应用说明

    Java缩略图生成库之Thumbnailator应用说明

    Thumbnailator是一个为Java界面更流畅的缩略图生成库,从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,使用起来非常方便,需要的朋友可以了解下
    2012-12-12

最新评论