[英]Jfreechart unable to set time in X axes
我正在尝试制作一个图表,该图表从串行端口获取数据并在y轴上绘制它们,而我希望在x轴上显示当前时间。我认为我正确设置了代码,因为我现在设法将其作为XY图表运行时间序列图我唯一的问题是方法series.add(TIME,SERIALDATA); 我不知道如何初始化TIME,我知道我想要一个对象RegularTimePeriod,但我不知道该怎么做。
这是代码。.我知道仅缺少一些行,请帮助我找到它们...
void initialize(){
frame = new JFrame();
frame.setBounds(100, 100, 817, 525);
final TimeSeries series = new TimeSeries("Charts");
final SerialDataReceived serialdataprint = new SerialDataReceived();
final TimeSeriesCollection data = new TimeSeriesCollection(series);
final JFreeChart chart = ChartFactory.createXYLineChart(
"Tmperature IN",
"Time",
"C",
data,
PlotOrientation.VERTICAL,
true,
true,
false
);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setBounds(10, 11, 477, 224);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
chartPanel.setVisible(true);
frame.getContentPane().setLayout(null);
frame.getContentPane().add(chartPanel);
chartPanel.setLayout(null);
Thread outtempthread=new Thread() { //THREAD THAT RUNS ALL THE TIME
public void run() {
try {
while (true){
Thread.sleep(2000);
double intemp = serialdataprint.getintemp(); //THIS WHERE I TAKE MY SERIAL DATA
series.add(I WANT TO DISPLAY HERE LETS SAY 13:23:15, intemp); //HERE IS MY PROBLEM
}}
catch (InterruptedException ie) {}
}
};
outtempthread.start();
}
我只使用过以天为单位的TimeSeries
,所以我使用了org.jfree.data.time.Day
类。
这是所有不同时间类的jfreechart javadoc: http : //www.jfree.org/jfreechart/api/javadoc/org/jfree/data/time/package-summary.html
尝试一些,看看什么是适合您的。
由于您似乎只需要一天的小时,分钟,因此您可以使用Second
Class。
这是您以这种方式制作TimeSeries
方法:
int todaysDay =...
int todaysMonth =...
int todaysYear =...
TimeSeries series = new TimeSeries(name, Second.class);
//this should mark 'inTemp' as 13:23:15
series.add(new Second(15,23,13,todaysDay, todaysMonth, todaysYear),
inTemp);
好!! 终于我找到了解决方案! 我不知道这是不是正确的方法,但是它能正常工作,现在每次我的串行端口更新在我的图表中都是实时的,这里是修复代码!
String timeStamp1 = new SimpleDateFormat("mm").format(Calendar.getInstance().getTime());
int minute = Integer.parseInt(timeStamp1);
double intemp = serialdataprint.getintemp();
series.addOrUpdate(new Minute(minute,hour), intemp);
几个指针:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.