2012-09-25 5 views
3

Frame은 모두 하나의 색이지만 모서리에 일부 텍스트가 있습니다. 색상을 설정하고 실제로 모니터에서 색상을 읽은 다음 해당 측정을 기반으로 계산을 수행합니다.AWT 다시 그리기가 완료 될 때까지 기다리십시오.

문제는 repaint()을 호출하면 후에 이 그려 지므로 Frame이 그립니다. 나는 이것이 repaint() EDT에 위임 한 것으로 가정하고 있지만, 실제 페인팅 작업 전/진행 중에 측정 결과로 인해 잘못된 결과가 나타납니다.

필자의 초기 생각은 페인트 완성에 청취자를 두는 것이었지만, 텍스트보다 더 자주 텍스트를 업데이트하기 위해 페인트를 다시 채색하여 색상에 대해 수행하는 것보다는 그 이벤트를 듣고 싶지 않습니다. 측정하기 전에 실제 페인팅 작업이 끝나기를 기다리는 방법은 무엇입니까?

+0

익명 잠금 개체 주위의 스레드를 동기화하여 한 스레드가 다른 스레드를 기다릴 수 있습니다. – Vulcan

+0

내 머리 꼭대기에서, 나는 당신이 믿을 수 있다고 생각하지 않는다. repaint를 호출 한 후에'SwingUtilities.invokeLater (Runnable)'을 사용하여 EDT의 끝에 퍼센티지를 배치 할 수는 있지만 아직 EDT에 다시 칠하기 요청이 있다는 보장은 없습니다 ... – MadProgrammer

+0

@ 벌컨 하지만 나는 EDT에 대한 통제권을 가지고 있지 않습니까? 실용적인 관점에서 볼 때, EDT는 아마 FIFO 일 것입니다. 그러나 정확성의 관점에서 볼 때, 저는 그렇게 확신합니까? –

답변

관련 문제