从后台线程更新缓冲图像

时间:2012-03-01 21:46:48

标签: java multithreading swing graphics bufferedimage

我正在后台线程上创建和更新BufferedImage。然后通过覆盖面板绘制方法将图像绘制到JPanel上,如图所示。

@Override
public void paint(Graphics g) {
    g.drawImage(image, 0, 0, null);
}

后台线程定期更新图像,然后调用面板invalidate方法。

我会遇到这种方法的任何问题吗?摆动线程读取和后台线程更新图像会导致任何问题吗?

由于

1 个答案:

答案 0 :(得分:2)

两个线程必须同步对共享数据的访问。 SwingWorker是定期发布BufferedImage的最可靠方法;有一个使用Double的示例here。您还可以查看示例here,它依赖于EventQueuerepaint()提供的(隐式)排序。在任何一种情况下,限制因素是相对于重绘时间的计时器频率。