一个动态实时时序图的实现。
代码如下:
RealTimeChart.java
package com.media.zhb.jfreechart;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.Millisecond;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
public class RealTimeChart extends ChartPanel implements Runnable {
private static final long serialVersionUID = -2754150583683675881L;
private static TimeSeries timeSeries;
private long value = 0;
public RealTimeChart(String chartContent, String title, String yaxisName) {
super(createChart(chartContent, title, yaxisName));
}
private static JFreeChart createChart(String chartContent, String title,
String yaxisName) {
// 创建时序图对象
timeSeries = new TimeSeries(chartContent, Millisecond.class);
TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(
timeSeries);
JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(title,
"时间(秒)", yaxisName, timeseriescollection, true, true, false);
// 设置标题字体
Font font = new Font("隶书", Font.BOLD, 25);
TextTitle textTitle = new TextTitle(title);
textTitle.setFont(font);
jfreechart.setTitle(textTitle);
// 设置图例字体
LegendTitle legend = jfreechart.getLegend(0);
legend.setItemFont(new Font("隶书", Font.TRUETYPE_FONT, 15));
XYPlot xyplot = jfreechart.getXYPlot();
// 纵坐标设定
ValueAxis valueaxis = xyplot.getDomainAxis();
// 自动设置数据轴数据范围
valueaxis.setAutoRange(true);
// 数据轴固定数据范围 30s
valueaxis.setFixedAutoRange(30000D);
valueaxis = xyplot.getRangeAxis();
// valueaxis.setRange(0.0D,200D);
// 纵轴
NumberAxis numAxis = (NumberAxis) xyplot.getRangeAxis();
// 设置纵轴标签字体
numAxis.setLabelFont(new Font("宋体", Font.BOLD, 14));
// 横轴
DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis();
// 设置横轴标签字体
dateaxis.setLabelFont(new Font("宋体", Font.BOLD, 14));
return jfreechart;
}
public void run() {
while (true) {
try {
timeSeries.add(new Millisecond(), randomNum());
Thread.sleep(300);
} catch (InterruptedException e) {
}
}
}
private long randomNum() {
System.out.println((Math.random() * 20 + 80));
return (long) (Math.random() * 20 + 80);
}
}
再写一个客户端代码。
TestClient.java
package com.media.zhb.jfreechart;
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class TestClient {
public static void main(String[] args) {
JFrame frame = new JFrame("Test Chart");
RealTimeChart rtcp = new RealTimeChart("随机数 ", "随机数", "数值");
frame.getContentPane().add(rtcp, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
(new Thread(rtcp)).start();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowevent) {
System.exit(0);
}
});
}
}
分享到:
相关推荐
JfreeChart学习总结JfreeChart学习总结
JFreeChart学习资料.doc 中文帮助文档
JFreeChart学习 比较详细 希望大家共同进步
JFreeChart学习资料大全JFreeChart学习资料大全
jFreeChart学习总结
jfreechart从入门到精通,讲解的比较详细。头透彻,附带例子。上手快~!
jfreeChart学习积累。新手看即可。
JfreeChart学习总结,很好,很全面
博文链接:https://yangwei.iteye.com/blog/114734
jfreechart-1.5.2.jar,jfreechart|jfreechart
JFreeChart 指南 JFreeChart Guide JFreeChart 示例 JFreeChart demo
jfreechart学习示例 mysql java 图形
精心收集的,很全面啊,适合新手及进阶!
Jfreechart 乱码分析和解决方法
jfreechart Java图形报表开源代码
JFreeChart学习,总结文档,有单柱状图的例子,也有多柱状图的例子,有饼图,可以分割,有多种曲线图的种类,学习JFreeChart的好资料。
JFreeChart示例 JAVA_JFreeChart的应用 JFreeChart 教程