2014-04-10 2 views
-1

비슷한 문제라고하지만, 대답을 찾을 수 없습니다 : Why is paintComponent() continuously and asynchronously being called without explicit repaint() call?의 paintComponent 여기에 지속적으로

내가

class DrawPanel extends JPanel { 

final void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     // some graphics drawing stuff 
} } 

에 그리기 다음 JScrollPane의이 추가 오전 JPanel을가합니다. 그러나 system.out.println()을 paintComponent 메소드에 넣으면 계속 호출되는 것을 볼 수 있습니다. 이걸 막을 방법이 있니? jpanel이 덮여 있기 때문에 가능한 링크에 따르면

답변

1

일반적으로 paintComponent()는 continually을 그리지 않습니다. Swing이 그릴 필요가 있다고 판단되면 occasionally가 호출됩니다.

메서드가 계속 호출되는 경우 몇 가지 가능한 문제를 생각해 볼 수 있습니다. 당신은 다음과 같습니다

  1. 수동으로 호출 재 페인트() 자동
+0

포인트 2는 문제였다) (칠 호출의 paintComponent() 메소드에서 구성 요소의 속성을 변경

  • , 나는했습니다 너무 작 으면 페인트에서 크기를 조정하려고 시도했습니다. 페인트 밖으로이 값을 넣으려고합니다. 건배. – DTC

  • 0

    paintComponent 호출은 Swing의 Event Dispatch Thread에서 가져옵니다. 구성 요소를 다시 칠해야 할 때마다 호출됩니다. 구성 요소의 크기를 조정하거나 최소화 된 상태에서 다시 가져 오면 다시 그립니다. 물론 다른 구성 요소로 덮으면 다시 그리기가 덜 ​​필요합니다. 다른 구성 요소에도 paintComponent 메소드가 있습니다. 걱정할 것 없음.