2010-05-16 102 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