Подписи к точкам на графике типа LineChart
Пытаюсь сделать всплывающие подсказки для каждой точки на графике типа LineChart. Построение графика работает, но когда я пытаюсь добавить подсказки, сталкиваюсь с ошибкой. Ошибка возникает в строчке:
ObservableList<XYChart.Data> dataList = ((XYChart.Series) unicast.getData().get(0)).getData();
Exception in thread "JavaFX Application Thread" java.lang.ClassCastException: class javafx.scene.chart.XYChart$Data cannot be cast to class javafx.scene.chart.XYChart$Series (javafx.scene.chart.XYChart$Data and javafx.scene.chart.XYChart$Series are in module [email protected] of loader 'platform')
Подскажите пожалуйста, что делаю не так? Спасибо)
Stage stage = new Stage();
stage.setTitle("T(P)");
final NumberAxis xAxis = new NumberAxis();
final NumberAxis yAxis = new NumberAxis();
xAxis.setLabel("P");
yAxis.setLabel("T");
final LineChart<Number,Number> lineChart = new LineChart<Number,Number>(xAxis,yAxis);
lineChart.setTitle("T(P)");
XYChart.Series unicast = new XYChart.Series();
unicast.setName("Unicast");
for (int i = 0; i < p_Unicast.size(); i++)
unicast.getData().add(new XYChart.Data(p_Unicast.get(i), TUnicast.get(i)));
XYChart.Series broadcast = new XYChart.Series();
broadcast.setName("Broadcast");
for (int i = 0; i < p_Unicast.size(); i++)
broadcast.getData().add(new XYChart.Data(p_Broadcastcast.get(i), TBroadcastcast.get(i)));
lineChart.getData().add(unicast);
lineChart.getData().add(broadcast);
ObservableList<XYChart.Data> dataList = ((XYChart.Series) unicast.getData().get(0)).getData();
dataList.forEach(data->{
Node node = data.getNode();
Tooltip tooltip = new Tooltip('(' + data.getXValue().toString() + ';' + data.getYValue().toString() + ')');
Tooltip.install(node, tooltip);
});
Scene scene = new Scene(lineChart,800,600);
stage.setScene(scene);
stage.show();
Ответы (1 шт):
Ошибка здесь:
ObservableList<XYChart.Data> dataList = ((XYChart.Series) unicast.getData().get(0)).getData();
Вы из серии берёте лист точек, из него берёте точку и пытаетесь её привести к серии. Вероятно вы перепутали unicast и lineChart.