主动渲染和EDT(Swing动画)

时间:2009-03-26 17:38:35

标签: java swing animation applet edt

我应该如何在Swing小程序中运行动画?

我有一个动画线程执行活动渲染,它最初动画很好。有时(在1分钟到2小时之后的任何地方),它开始无法更新屏幕,只有声音发生。我相信这是因为油漆不是从EDT执行导致某种并发问题。

那么,是否应该仅从EDT调用活动渲染(即getGraphics()和绘画)?这个问题是Swing计时器缺乏精确性。

或者有没有人在不使用EDT的情况下成功进行主动渲染,并完全禁用页面的任何EDT更新(可能使用Canvas /或忽略JPanel上的重绘)?

2 个答案:

答案 0 :(得分:2)

您可以在另一个线程中将图形绘制到您自己的屏幕外图像中,然后复制到EDT中的屏幕。但对于单线程的东西,我希望你的帧速率足够高,能够在EDT中完成。

答案 1 :(得分:1)

要注意的一些事情是确保只重新绘制需要重新绘制的内容,而不是每次重新绘制整个图形上下文,除非必要。还有一个timing framework可以用来处理一些动画。我不认为它是在积极开发,但上次我看到它有一些很好的api用于动画。

在不知道具体用例的情况下,这就是我能够从头顶出来的全部内容。