複製鏈接
請複製以下鏈接發送給好友

repaint

鎖定
repaint 重繪此組件。如果組件是輕量組件,則此方法會盡快調用此組件的 paint 方法。否則此方法會盡快調用此組件的 update 方法。
外文名
repaint
性    質
科學
類    別
計算機

目錄

repaint方法

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工作原理

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()方法進行繪製下一個需要顯示的內容.這樣就起到了一種圖片的交替顯示從而在視角上形成了動畫.