首页 > Java > java教程 > 如何从后台线程安全更新 JFreeChart 系列?

如何从后台线程安全更新 JFreeChart 系列?

Patricia Arquette
发布: 2024-12-16 11:29:14
原创
326 人浏览过

How to Safely Update JFreeChart Series from a Background Thread?

使用 JFreeChart 修改系列时出现意外错误

问题:
尝试动态更新 JFreeChart情节,用户遇到“系列索引越界”和“索引越界”尝试在后台线程中更改数据集时出现异常。

根本原因:
问题是直接从后台线程(不是线程)修改数据集-安全操作。

解决方案:
为了确保线程安全更新,用户应该使用摇摆工人。此类提供了一种从后台线程更新 GUI 的安全方法,方法是更新 process() 方法中的数据集,该方法在事件调度线程 (EDT) 上调用。

替代解决方案:
对于 X 轴表示计数或迭代次数而不是时间的情况,应使用 NumberAxis 而不是 DateAxis。此更改还允许在计算完成时更新绘图,而不是按固定时间间隔更新。

示例代码实现:

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);
    }
}
登录后复制

在此代码中, process() 方法用于在新数据可用时安全地更新 EDT 上的 XYSeries 数据集。 XYLineAndShapeRenderer 设置为渲染第一个系列的形状,使点在绘图上可见。

以上是如何从后台线程安全更新 JFreeChart 系列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板