我只是想知道我想制作使用javafx图表在DateAxis上显示实时数据的程序。
现在,我制作了实时图表,但它与DateAxis不匹配。 我知道有CategoryAxis和NumberAxis,当我在Stackoverflow中搜索时,我需要将NumberAxis用于setTickLabelFormatter。
现在,我从数据库获取日期(字符串类型)并将其更改为long类型。 但我不知道如何将这些数据插入LineChart xAxis。首先,我需要按日期对这些数据进行排序并插入xAxis。
在我的代码中,有很多错误。 我需要解决问题的方法而不是错误。 我不知道解决这个问题。 请帮帮我。
这是数据代码:
while(searchCursor.hasNext())
{
Document element = searchCursor.next();
String datetime = element.getString("Date");
Double value = Double.parseDouble(element.getString("Value"));
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
date = format.parse(datetime);
longdate = date.getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Datalist.add(new GraphData(longdate, value));
Collections.sort(Datalist, new Comparator<GraphData>() {
@Override
public int compare(GraphData date1, GraphData date2)
{
return date1.Date.compareTo(date2.Date);
}
});
dateAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(dateAxis)
{
@Override
public String toString(Number object)
{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(object.longValue()), ZoneId.systemDefault());
String formattedDateTime = dateTime.format(formatter);
return formattedDateTime;
}
});
series[i].getData().add(new XYChart.Data<Number, Number>((Datalist.get(eachdatacnt).Date), Datalist.get(eachdatacnt).Value));
eachdatacnt++;
}
series[i].setName(SelectedEndpointNameList.get(i).toString());
lineChart.setAnimated(false);
lineChart.getData().add(series[i]);
lineChart.setAxisSortingPolicy(LineChart.SortingPolicy.X_AXIS);
}