java - 为什么我不能从控制器中的 .fxml 修改图表?
问题描述
我在我的 .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>
解决方案
您可以使用 highcharts 库来代替它。它支持 json 格式,可以简化您的问题。
推荐阅读
- c++ - Boost program_options 将多个配置文件解析结果存储到一个 parsed_options
- python - 用于制作 python 装饰器类的精益接口
- python - stem.connection.IncorrectSocketType:无法使用控制套接字
- move - 终端中的 Windows XP SP1 复制命令不起作用
- sql-server - 创建有权授予 dbo 模式的数据库用户/角色
- sql - SQL Server Always On 可用性组卡在“同步/恢复中”
- c# - 为什么向 C# 程序添加新代码文件会导致创建表单(菜单)?
- java - Modelmapper 无法映射整个模型?
- scala - 为什么正确的类型 Any 和 Nothing 适合类型构造函数形状 F[_] 当它们是不同的类型时?
- python - 如何使用像素完美碰撞与两个图像pygame