我想知道下面的功能是如何工作的。通过第一个函数调用, 它仅绘制旧方块位置的背景,但第二个函数称它为红色方块。
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 :(得分:4)
repaint()方法将绘制请求传递给RepaintManager。当收到多个请求的时间很短时,RepaintManager会将两个单独的请求合并为一个请求。
所以如果你有类似的东西:
repaint(5, 5, 20, 20);
...
repaint( 30, 30, 20, 20);
RepaintManager
最终将它们合并为(5, 5, 45, 45)
的单个重绘。因此,这个更大的区域将包括两个单独请求的区域。那么paintComponent()
方法绘制该区域的背景,然后绘制正方形。