repaint

repaint 重繪此組件。如果組件是輕量組件,則此方法會儘快調用此組件的 paint 方法。否則此方法會儘快調用此組件的 update 方法。

方法

repaint()方法用於重繪組件,該方法有下面四種形式:

1。public void repaint()

2。public void repaint(long tm)

//指定調用update方法之前等待的最大毫秒數tm

3。public void repaint(int x,int y,int width,int height)

//重繪組件的指定矩形區域

4。public void repaint(ling tm,int x,int y,int width,int height)

repaint方法不總是馬上執行,Java雖然會儘可能快的執行repaint,當Applet運行在較慢的平台上或計算機較忙時,應該考慮使用第2或4種repaint方法,指定在多長時間內必須執行repaint,否則就放棄。

工作原理

repaint()這個方法是一個具有刷新頁面效果的方法,如果你要頁面進行重畫就可以調用.一般都是在AWT的圖形繪製當中調用的到.那么該方法具體的工作原來是怎么樣的呢?看下面的結構流程圖你就可以大概的了解了:

repaint()方法

|

|

V

AWT執行緒--->paint()方法-->圖形繪製

|

|

V

update()方法--->paint()方法--圖形繪製

從上面的流程圖可以看出,在繪製動畫圖形時候如果沒有調用repaint()方法的時候直接就是由執行緒調用paint()方法進行繪製,用repaint()進行刷新顯示.但是這樣的動畫會有個缺點(這樣的效果繪製出來會有閃爍).想想做出來的動畫總是隔一段時間就閃爍,有人會看嗎?那么應該怎么去除閃爍呢?我再下面的文章中會講到.這裡主要的是說明repaint()這個方法.

在調用了repaint()的時候我門可以看出,它並不是直接就去繪製動畫(調用paint()),而是通過調用AWT執行緒在由執行緒去調用另一個方法update()再由update()調用畫筆paint()方法進行繪製.那么這裡為什麼要多做一步呢?這樣是不是為我門多增加代碼的書寫量呢?回答是當然不會,如果你不調用repaint()那么就不能實現每一次的刷新顯示,就只會繪製重疊的圖形,不能一張一張的繪製出來.那么其中調用的update()到底是起到什麼樣的作用呢?

update():清除當前顯示並調用paint()方法.當然這個update()方法是可以被修改的,我門在另一篇文章關於"雙緩衝技術"中會給大家講到這點.

綜合上面的介紹可以總結出repaint()的工作原理:repaint()通過調用執行緒再由執行緒去調用update()方法清除當前顯示並再調用paint()方法進行繪製下一個需要顯示的內容.這樣就起到了一種圖片的交替顯示從而在視角上形成了動畫.

相關詞條

相關搜尋

熱門詞條

聯絡我們