Я определил BarChart в своем файле .fxml, который я вставляю в свой контроллер, используя аннотацию @FXML.Но когда я вставляю ряд данных, диаграмма все равно отображается пустой в моем приложении, хотя выходные данные отладчика подтверждают, что я успешно вставил ряд данных в свою диаграмму.Нужно ли указывать представлению диаграммы обновляться каким-либо образом?
Конечно, я мог бы просто обойти проблему, получив панель из fxml, в которую я бы затем вставил диаграмму (которая работает, и я использовал этоОбходной путь в прошлом).Но мне любопытно, что я делаю не так.
Спасибо за вашу помощь!
Код контроллера:
@FXML private BarChart<Number,String> barChart;
//...
barChart.getData().add( new XYChart.Series<Number,String>("blabla",
eventService
.getTopTen(EventType.MUSICAL)
.entrySet()
.stream()
.map(entry -> new XYChart.Data<>((Number)entry.getValue(),entry.getKey().getName(),entry))
.collect(Collectors.collectingAndThen(toList(), FXCollections::observableArrayList))
));
Мой FXML:
//...
<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="at.ac.tuwien.inso.sepm.ticketline.client.gui.event.EventTopTenController">
<children>
<Button layoutX="267.0" layoutY="361.0" mnemonicParsing="false" onAction="#MusicalTopTenButtonHandler" text="Literature" />
<BarChart fx:id="barChart" layoutX="52.0" layoutY="14.0" prefHeight="338.0" prefWidth="510.0">
<xAxis>
<NumberAxis side="BOTTOM" />
</xAxis>
<yAxis>
<CategoryAxis side="LEFT" />
</yAxis>
</BarChart>
</children>