2016-12-04 61 views
-1

我想知道下面的函數是如何工作的。通過第一個函數調用, 它只繪製舊方形位置的背景,但第二個函數調用它繪製紅色方形。重繪功能如何工作?

if(CURR_X != x || CURR_Y != y) { 
    //The square is moving, repaint backgorund 
    //over the old square location 
    repaint(CURR_X,CURR_Y,CURR_W+OFFSET,CURR_H+OFFSET); 
    //Update coordinates 
    square.setX(x); 
    square.setY(y); 
    repaint(square.getX(),square.getY(), 
       square.getWidth()+OFFSET,square.getHeight()+OFFSET); 
} 
+0

請參閱[*在AWT和Swing *中繪畫](http://www.oracle.com/technetwork/java/painting-140037.html)。 – trashgod

+0

http://stackoverflow.com/questions/10852897/repaint-method-in-java我想你會發現你在那裏回答 – Koen2K

回答

4

repaint()方法將繪畫請求傳遞給RepaintManager。當收到多個請求的時間很短時,RepaintManager會將兩個單獨的請求合併成一個請求。

所以,如果你有這樣的:

repaint(5, 5, 20, 20); 
... 
repaint(30, 30, 20, 20); 

RepaintManager結束了他們整合成(5, 5, 45, 45)一個重繪。所以這個更大的區域將包括個別請求的區域。那麼paintComponent()方法繪製該區域的背景,然後繪製正方形。