我在.fxml文件中定义了一个BarChart,然后使用@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>
答案 0 :(得分:0)
您可以使用highcharts库代替它。它支持json格式,可以简化您的问题。
答案 1 :(得分:0)
我已经知道了。我有两次错误地将fxml加载到程序中。在控制器中调用该方法后,其中一个节点已更新,另一个未更新。我只是看着那不是。还是谢谢你!