OhL*_*wdy 4 java javafx linechart
我目前正在学习JavaFX,并且正在尝试创建一个显示折线图的应用程序,并允许用户更改某些变量,然后更改绘制的线条.我这样做的方法是删除系列(和系列中的数据点),然后重新填充系列并再次添加它们,如下所示.
public void plot(double[] xArr, double[] yExactArr, double[] yApproxArr) {
linePlot.getData().clear();
if (!exactValues.getData().isEmpty()) {
exactValues.getData().remove(0, xArr.length - 1);
approxValues.getData().remove(0, xArr.length - 1);
}
for (int i = 0; i < xArr.length; i++) {
exactValues.getData().add(new XYChart.Data(xArr[i], yExactArr[i]));
approxValues.getData().add(new XYChart.Data(xArr[i], yApproxArr[i]));
}
linePlot.getData().addAll(exactValues, approxValues);
mainStage.show();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我收到以下错误:
Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Duplicate series added
Run Code Online (Sandbox Code Playgroud)
addAll()第二次调用时就会发生这种情况.当我打印调用后的toString()函数时,它打印一个空数组,所以看起来应该没有问题.我的猜测是,这不是改变线路的正确方法,但这是我的新手尝试.看起来我应该只能更改系列中的数据(不删除和读取它们),但我的情节不会更新.linePlot.getData()clear()
有什么想法/建议吗?
如果您有以下问题,也可能发生此问题:
animated="true"
Run Code Online (Sandbox Code Playgroud)
为折线图设置.
当类XYChart检查重复项时,它将从displayedSeries中获取所有系列,并将它们与现有数据系列进行比较.在此期间,如果您已清除数据,由于延长的淡入淡出效果,系列仍将在显示的系列中,并导致"重复系列添加"错误.
如果是这种情况,只需设置:
animated="false"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2110 次 |
| 最近记录: |