2011-02-27 4 views
3

스윙의 repaint 완료를 기다리고 싶습니다.스윙 엘리먼트 완료 재실행 대기

예 :

frame.repaint(); 
wait_for_repaint_to_finish(); 
//work 

나는 이런 식으로 뭔가가 :

SwingUtilities.invokeAndWait(new Runnable() { 

    public void run() { 
     try { 
      frame.repaint(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}); 

이 그것을 할 올바른 방법입니다?

+0

달성하려는 목표를 파악하는 데 도움이 될 수 있습니다. – trashgod

+0

재 형식화 된 코드; 잘못된 경우 되돌려주십시오. – trashgod

답변

2

질문을이 같은 필요합니까 왜? 왜 전체 프레임을 다시 채우고 프레임이 완료 될 때까지 기다릴 것입니까? 우리가 무엇을하려고하는지 알면 아마 더 좋은 제안을 줄 수 있습니다.

repaint()는 그림 그리기를 예약합니다. RepaintManager는 여러 페인트 요청을 통합하여 한 번에 수행하여 paintng을보다 효율적으로 만듭니다.

당신이 정말로 다시 그리기를 강제해야하는 경우가 디자인 문제를 해결하기 위해

JComponent.paintImmediately(...); 

를 사용할 수 있지만 이것은 최후의 수단으로 만 사용해야하지,라고 말했다 가졌어요.

1

당신은 paintComponent() 재정의 할 수

@Override 
protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    ... 
    // repaint finished here 
}