在Java編寫具有連貫變化的窗口程序時,通常的辦法是在子類中覆蓋父類的paint(Graphics)方法,在方法中使用GUI函數實現窗口重繪的過程。連貫變換的窗口會不斷地調用update(Graphics)函數,該函數自動的調用paint(Graphics)函數。這樣就會出現閃爍的情況。
爲了解決這一問題,可以應用雙緩衝技術。可以通過截取上述過程,覆蓋update(Graphics)函數,在內存中創建一個與窗口大小相同的圖形,並獲得該圖形的圖形上下文(Graphics),再將圖片的圖形上下文作爲參數調用paint(Graphics)函數(paint(Graphics)中的GUI函數會在圖片上畫圖),再在update(Graphics)函數調用drawImage函數將創建的圖形直接畫在窗口上。
因爲大部分繪圖過程是在內存中進行,所以有效地消除了閃爍。這應用了“以空間換取時間”和“功能分塊”的思想