javafx - 无法使用 FXML 更新 JavaFX 中的散点图 NumberAxis 元数据
问题描述
我正在尝试遵循本指南: https ://docs.oracle.com/javafx/2/charts/scatter-chart.htm 指南的示例工作正常,但是当尝试将其与场景构建器和 FXML 结合使用时,我会有些奇怪错误。首先默认 X 轴作为类别轴,必须在 XML 中手动更改它。现在片段看起来像这样:
<ScatterChart fx:id="modScatChart" layoutX="303.0" layoutY="122.0" title="Modify timeline" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<xAxis>
<NumberAxis fx:id="scatXAxis" side="BOTTOM" />
</xAxis>
<yAxis>
<NumberAxis fx:id="scatYAxis" side="LEFT" />
</yAxis>
</ScatterChart>
X 轴需要是 NumberAxis,因为 X 值将是标准化的浮点日期值,例如 2018 年的第 180 天是 appr。2018,5。现在,当尝试为 NumberAxis 提供最小值、最大值、刻度值时,似乎所有内容都被忽略了。它看起来总是这样: 在此处输入图像描述 这是相关的代码片段(GraphBean 基本上提供了 HashMap(毫秒/loc,其中 ms 将转换为日期),x 轴的最小值和 y 轴的最大值。
public class FXMLDocumentController implements Initializable {
@FXML NumberAxis scatXAxis = new NumberAxis();
@FXML NumberAxis scatYAxis = new NumberAxis();
@FXML ScatterChart modScatChart = new ScatterChart(scatXAxis,scatYAxis);
@Override
public void initialize(URL url, ResourceBundle rb) {
try {
setupGraphs();
} catch(SQLException e){
System.out.println(e);
} catch(Exception e){
System.out.println(e);
}
}
private void setupGraphs() throws SQLException {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date(graphsBean.getMinModMs()));
int minYear = cal.get(Calendar.YEAR);
cal.setTime(new Date(System.currentTimeMillis()));
int thisYear = cal.get(Calendar.YEAR);
scatXAxis = new NumberAxis(minYear, thisYear, 1);
scatYAxis = new NumberAxis(0, graphsBean.getMaxLoc(), Math.round(graphsBean.getMaxLoc()/10));
scatXAxis.setLabel("Time");
scatYAxis.setLabel("Application size in loc");
Series series1 = new XYChart.Series();
series1.setName("All");
HashMap<Long, Integer> scatMap = graphsBean.getScatMap();
for (Map.Entry<Long, Integer> entry : scatMap.entrySet()) {
cal.setTime(new Date(entry.getKey()));
int curYear = cal.get(Calendar.YEAR);
float yearDayFlt = curYear+(float)(cal.get(Calendar.DAY_OF_YEAR))/365;
series1.getData().add(new XYChart.Data(yearDayFlt, entry.getValue()));
}
modScatChart.getData().addAll(series1);
}
}
还尝试在课程开始时使用手动数据完全初始化 NumberAxis,但结果仍然相同。我到底在这里想念什么?
解决方案
推荐阅读
- jquery - 如何在动态元素中应用mouseleave?
- android - 滚动列表视图时如何防止在列表视图中添加新视图对象
- hadoop - 无法从 ZooKeeper 读取 HiveServer2 配置
- backpropagation - 注意力模型中的反向传播
- python - 在 Windows 10 上通过 TGZ 安装 Python 3.4.x
- javascript - 匹配精确句子和单个单词的正则表达式?
- javascript - 从路由获取的动态 Div Id
- c# - 由于元素创建的顺序,无法找到实线和线的交点
- drupal - 在 Drupal 中,内容和节点是否指代新页面?
- kubernetes - 谁/在哪里实际工作在 kubernetes 中进行活性探测?