Я работаю в автономном режиме, поэтому не могу скопировать всю кодовую базу, постараюсь описать как можно больше.
JavaFX не предоставляет кольцевую диаграмму, поэтому я создалПользовательский график пончик, просто расширяя PieChart и затем добавляя круг в центр.Псевдокод выглядит следующим образом:
public class DonutChart extends PieChart{
private final Circle innerCircle;
//Initialize PieChart
//Override "layoutChartChildren()" method to override chart label with value instead of name
//Calculate chart bounds by looping through each node to find the max/min X/Y bounds.
//Create a smaller circle and relocate it to the center of the PieChart
}
Это дало мне кольцевую диаграмму, которую я хотел, но теперь я хочу иметь двойную кольцевую диаграмму, то есть еще один слой, который разбивает диаграмму дальше.Я сделал то же самое снова, но на этот раз вместо того, чтобы просто добавить «innerCircle», я также добавил еще одну круговую диаграмму.Теперь это выглядит примерно так:
public class DonutChart extends PieChart{
private final Circle innerCircle;
private PieChart innerChart;
/*
* Initialize PieChart
* Override "layoutChartChildren()" method to override chart label with value instead of name
* Calculate chart bounds by looping through each node to find the max/min X/Y bounds.
* Create and add innerChart and innerCircle
*/
private void addChartAndCircle(){
if (getData().size > 0){
Node pie = getData().get(0).getNode();
if (pie.getParent() instanceof Pane){
Pane parent = pie.getParent();
if (!parent.getChildren().contains(innerChart)){
parent.getChildren().add(innerChart);
}
if (!parent.getChildren().contains(innerCircle)){
parent.getChildren().add(innerCircle);
}
}
}
}
//Relocate to center
}
Только внешний график "DonutChart" отображался вместе с внутренним кругом, но innerChart нигде не было видно.Я также заметил, что свойство width внутренней диаграммы равно 0, и я попытался связать свойство, задав max / min / pref width / height innerChart, но безрезультатно.
Может ли кто-нибудьсоздать пользовательскую кольцевую диаграмму, в которой отображены 2 слоя?