我正在后台线程上创建和更新BufferedImage。然后通过覆盖面板绘制方法将图像绘制到JPanel上,如图所示。
@Override
public void paint(Graphics g) {
g.drawImage(image, 0, 0, null);
}
后台线程定期更新图像,然后调用面板invalidate方法。
我会遇到这种方法的任何问题吗?摆动线程读取和后台线程更新图像会导致任何问题吗?
由于
本
答案 0 :(得分:2)
两个线程必须同步对共享数据的访问。 SwingWorker
是定期发布BufferedImage
的最可靠方法;有一个使用Double
的示例here。您还可以查看示例here,它依赖于EventQueue
和repaint()
提供的(隐式)排序。在任何一种情况下,限制因素是相对于重绘时间的计时器频率。