2016-12-04 2 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 나는 youll이저기서 youre 대답을 찾은 것 같아요. – Koen2K

답변

4

repaint() 메소드는 페인트 요청을 RepaintManager에 전달합니다. RepaintManager가 두 개의 개별 요청을 단일 요청으로 통합하는 짧은 기간 동안 여러 요청이 수신 될 때.

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

RepaintManager(5, 5, 45, 45)의 단일 재 페인트로 통합 끝 :

그래서 당신은 뭔가를해야합니다. 따라서이 큰 영역에는 두 가지 개별 요청 영역이 포함됩니다. 그런 다음 paintComponent() 메서드는 해당 영역의 배경을 칠한 다음 사각형을 칠합니다.

관련 문제