动态javaFX线图

时间:2018-04-11 19:59:11

标签: java javafx linechart

我的场景中有一个折线图,其中显示了几个系列。另外一个或两个数据被添加到系列中并显示在图表上。问题是一段时间后程序正在运行数据越来越多,图表变得几乎无用。我想只显示图表中的最后50个数据,现在显示旧的数据了。 我采用的方法是禁用XAxis中的“强制零范围”,并在每次数据插入时从系列中删除索引-50数据。但我面对ConcurrentModificationException和indexOutofBoundaryException。这个问题有更好的方法吗? 这是我的图表,系列和数据插入代码。

gxSeries = new XYChart.Series<Number, Number>();
 gySeries = new XYChart.Series<Number, Number>();
 gzSeries = new XYChart.Series<Number, Number>();
gxSeries.setName("p(Rad/s)");
gySeries.setName("q(Rad/s)");
gzSeries.setName("r(Rad/s)");
gSeriesChart.getData().add(gxSeries);
gSeriesChart.getData().add(gySeries);
gSeriesChart.getData().add(gzSeries);
    gSeriesChart.setCreateSymbols(false);
          gSeriesChart.getStyleClass().add("thick-chart");
    gSeriesX.setForceZeroInRange(false);

gxSeries,...是系列 gSeriesChart是lineChart gSeriesX是xAxis

 gxSeries.getData().add(new XYChart.Data<Number, Number>(tele.missionTime/1000.0, tele.gx));
gySeries.getData().add(new XYChart.Data<Number, Number>(tele.missionTime/1000.0, tele.gy));
gzSeries.getData().add(new XYChart.Data<Number, Number>(tele.missionTime/1000.0, tele.gz));

1 个答案:

答案 0 :(得分:0)

检查集合中的数据集数量,如果集合中有51个数据集,请删除最旧的数据集。它应该是可行的,例如yourSeries.getData()。remove(0); 发生IOOB异常是因为您只有0到49之间的索引。最旧的值是索引为0的值。 '希望有所帮助!