2010-05-21 3 views
3

"애니메이션"을 그리는 여러 스레드가있는 JPanel이 있습니다. "애니메이션"은 화면의 한 영역에서 다른 영역으로 이동되는 ImageIcon이있는 JLabel로 구성됩니다.Java : 다중 스레드를 사용하여 JPanel에서 동시에 그래픽으로 페인팅

이제 문제는 - 언급 된 스레드가 여러 애니메이션을 화면에 그려야한다는 것입니다. 문제는 JPanel의 "paint()"메서드가 한 번에 하나의 스레드에 의해서만 처리되어 애니메이션이 병렬 방식이 아닌 연속적으로 실행되도록하는 것입니다.

동시에 여러 애니메이션을 화면에 표시하는 방법에 대해 알고 싶습니다.

답변

2

스윙은 스레드로부터 안전하지 않으므로 여러 스레드에서 동시에 UI 관련 작업을 수행하는 것은 지원되지 않습니다. 모델 - 뷰 - 컨트롤러 (MVC) 패턴

이동합니다

  • 는 모든 스레드가 (스레드 안전) 모델을 업데이트하자.
  • 모델 업데이트가있을 때마다 repaint를 호출하십시오.
  • repaint()는 적절한 paint-methods를 호출하도록 UI 스레드를 예약합니다.
  • 페인트 방법은 모델의 상태를 읽고 그에 따라 구성 요소를 그려야합니다.
4

원하는 작업을 수행하는 데 다중 스레드를 사용할 수 없습니다. Swing Toolkit은 단일 스레드 입니다.

+0

고정 링크 : [트라이던트 애니메이션 프레임 워크 (https://github.com/kirill 그것을 할 올바른 방법은 사용할 수있는 애니메이션 프레임 워크 중 하나를 사용하는 것입니다 -grouchnikov/trident), [TimingFramework] (https://github.com/akuhtz/timingframework) _ (직접 편집 할 수 있도록 대기중인 너무 많은 수정 요청) _ –

관련 문제