开发显示后台计算结果的 GUI 时,常见的任务是在新信息出现时更新图表的数据可用的。使用 JFreeChart,这可以通过修改底层数据集来实现。但是,如果数据集更改过于频繁或以不同步的方式更改,则可能会出现错误,例如“系列索引越界”或“索引越界”异常。
要解决这些问题,需要建议从 SwingWorker 的 process() 方法更新数据集,这样可以确保线程安全。此外,如果图的域表示迭代次数而不是时间,则适合使用 NumberAxis 而不是 DateAxis。
示例:
以下代码演示了如何使用 SwingWorker 实时更新折线图:
private XYSeries series = new XYSeries("Result"); ... @Override protected void process(List<Double> chunks) { for (double d : chunks) { label.setText(df.format(d)); series.add(++n, d); } }
此代码片段使用XYSeries 用于存储数据点并在 SwingWorker 的 process() 方法中更新系列。标签也会更新以显示当前值。
其他注意事项:
以上是在 GUI 中更新 JFreeChart 系列时如何避免随机错误?的详细内容。更多信息请关注PHP中文网其他相关文章!