动态 javaFX 线图
Dynamic javaFX linechart
我的场景中有一个折线图,它在 it.each 中显示了几个系列,第二个一两个数据被添加到系列中并显示在图表上。问题是一段时间后,程序 运行 数据越来越多,图表几乎变得 useless.I 只想显示图表中的最后 50 个数据,现在不再显示更旧的数据。
我采用的方法是为 XAxis 禁用 "Force Zero in the range" 并在每次数据插入时从系列中删除索引 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 是折线图
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));
检查您的集合中的数据集数量,如果您的集合中有 51 个数据集,请删除最旧的一个。像 yourSeries.getData().remove(0) 这样的东西应该是可行的;
发生 IOOB 异常是因为您只有从 0 到 49 的索引。最旧的值是索引为 0 的值。
'希望有所帮助!
我的场景中有一个折线图,它在 it.each 中显示了几个系列,第二个一两个数据被添加到系列中并显示在图表上。问题是一段时间后,程序 运行 数据越来越多,图表几乎变得 useless.I 只想显示图表中的最后 50 个数据,现在不再显示更旧的数据。 我采用的方法是为 XAxis 禁用 "Force Zero in the range" 并在每次数据插入时从系列中删除索引 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 是折线图 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));
检查您的集合中的数据集数量,如果您的集合中有 51 个数据集,请删除最旧的一个。像 yourSeries.getData().remove(0) 这样的东西应该是可行的; 发生 IOOB 异常是因为您只有从 0 到 49 的索引。最旧的值是索引为 0 的值。 '希望有所帮助!