重绘功能如何工作?

时间:2016-12-04 11:20:33

标签: java swing user-interface

我想知道下面的功能是如何工作的。通过第一个函数调用, 它仅绘制旧方块位置的背景,但第二个函数称它为红色方块。

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);
}

1 个答案:

答案 0 :(得分:4)

repaint()方法将绘制请求传递给RepaintManager。当收到多个请求的时间很短时,RepaintManager会将两个单独的请求合并为一个请求。

所以如果你有类似的东西:

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

RepaintManager最终将它们合并为(5, 5, 45, 45)的单个重绘。因此,这个更大的区域将包括两个单独请求的区域。那么paintComponent()方法绘制该区域的背景,然后绘制正方形。