2010-05-16 40 views
7

双缓存(在java中)awt可能吗?目前,我知道swing不应该与awt一起使用,所以我不能使用BufferStrategy,也不能使用(我已经有一些用awt编写的代码,我不想在swing中重写)。双缓存awt

如果使用awt可以实现双缓冲,那么我是否必须手工编写缓冲区?与swing不同,awt似乎没有相同的内置双缓冲功能。

如果我必须手工编写代码,有没有一个很好的教程来看看?或者,对于新手程序员来说,使用swing会更简单/明智吗?

对不起,关于多步骤的问题。感谢您的时间:)

回答

6

这很容易在网上回答。只需搜索“double buffer awt”,就可以找到很多示例。你甚至可以看到我在1998年用Java 1.0 AWT写了自己的an old example。你只需要实例化你自己的图形对象并绘制成图像,然后将该图像粘贴到画布上。这里是我的例子中的代码的关键位:

public void paint(Graphics g) { 
    if (doubleBuffer) { 
     paintSky(top.gBuf); 
     g.drawImage(top.buf, 0, 0, this); 
    } else { 
     paintSky(g); 
    } 
    } 
+1

我会说如果可能的话重用swing实现是明智的。 – aioobe 2010-05-16 20:39:22

+0

哦,亲爱的,我不能运行代码,因为newStuff()方法不存在。 D: – exodrifter 2010-05-16 20:42:29

+0

@DDP:呵呵,这很奇怪。很明显,我还没有尝试在十年内编译该代码......编译后的代码在这里作为一个applet运行:http://www.astro.wisc.edu/~dolan/java/Constellations.html所以源代码I链接不得是正确的版本。 – 2010-05-17 02:24:31