Теоретически вы должны иметь возможность rotate
данных диаграммы p ie. Однако, поскольку API диаграммы имеет Node
, который представляет данные как часть класса данных (который, на мой взгляд, представляет собой серьезный недостаток дизайна и делает API диаграмм непригодным для производственного кода), это приводит к Ошибка «добавлены дубликаты дочерних элементов».
Таким образом, кажется, единственный способ обойти это - создать глубокую копию данных и повернуть этот список, что, по сути, вы и делаете. Обратите внимание, что на самом деле нет необходимости создавать ObservableList
для копии данных; подойдет обычный старый List
(у которого меньше накладных расходов). Так что ваш код можно немного сократить:
button.setOnAction(e -> {
List<Data> dataCopy = new ArrayList<>();
for (Data d : pieChart.getData())
dataCopy.add(new Data(d.getName(), d.getPieValue()));
Collections.rotate(dataCopy, 1);
pieChart.getData().setAll(dataCopy);
});