В настоящее время я изучаю JavaFX и пытаюсь создать приложение, которое отображает линейную диаграмму и позволяет пользователю изменять определенные переменные, которые затем меняют построенную линию. То, как я это делаю, - удалить серию (и точки данных внутри серии), а затем снова заполнить серию и добавить их снова, как показано ниже.JavaFX Duplicate Series Added
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();
}
Однако, когда я делаю это я получаю следующее сообщение об ошибке:
Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Duplicate series added
Это происходит, как только addAll()
называется второй раз. Когда я печатаю функцию toString()
linePlot.getData()
после вызова clear()
, он печатает пустой массив, поэтому кажется, что проблем не должно быть. Я предполагаю, что это не правильный способ изменения строки, но это моя попытка новичка. Похоже, я должен иметь возможность просто изменять данные внутри серии (не удаляя и не считывая их), но потом мой сюжет не обновляется.
Любые идеи/рекомендации?
Похоже, он должен работать (если вы случайно не имеют '' exactValues' и approxValues' указывая на тот же список). Можете ли вы создать [MCVE] (http://stackoverflow.com/help/mcve), который демонстрирует проблему? –