2010-01-14 4 views
0

지금까지 필자는 Image와 Image를 생성하여 이중 버퍼링을 수행했습니다. 연결된 Image 객체를 사용하여 해당 이미지를 그리기 위해 paint 메소드의 Graphics 객체를 사용하여 해당 이미지를 그립니다. 최근에 BufferStrategy 클래스와 그 사용법을 배웠습니다. 나는이 두 가지 방법의 장단점을 궁금해했다.BufferStrategy vs DIY Double Buffering in JFrame

편집 : 나는 내 질문을 아주 분명하게 생각하지 않는다. DIY 방법과 BufferStrategy의 장점/단점을 알고 싶었습니다. 언제든지 하나 또는 둘 다를 사용해야합니다.

답변

7

나는 항상 좋은 결과가 결코 EDT

이 제외 스레드에서 그릴 수 없습니다 항상 EDT

  • 에 GUI 구성 요소를 구성

    • 에 조심하여 기본 BufferStrategy를 사용했다했습니다 우수 example은가 아닌 초기 스레드에서 계속해서 그려 지므로 이중 버퍼 여야합니다.. 대조적으로,이 상당히 바쁜 examplerepaint()에 응답하여 Swing Timer에 대한 응답으로 처리됩니다. 나는 composite을 제외하고는 거의 오프 스크린 버퍼가 필요하지 않다. 마지막으로,이 tutorial article은 더 많은 가이드 라인을 제공합니다.

  • +1

    EDT는 무엇을 나타 냅니까? – resotpvl

    +1

    스윙 스레드 또는 때로는 AWT 스레드라고도하는 이벤트 발송 스레드를 나타냅니다. @trashgod가 지적했듯이 Swing은 스레드로부터 안전하지 않기 때문에이 스레드에서 GUI 구성 요소를 만들고 수정하는 것이 중요합니다. http://java.sun.com/docs/books/tutorial/uiswing/concurrency/dispatch.html –

    +0

    좋은 회화; 그에 따라 링크를 편집했습니다. – trashgod

    1

    그렇지 않은 경우 Painting in AWT and Swing을 읽는 것이 좋습니다.

    JFrame을 사용하는 경우 일반적으로 Do-It-Yourself 이중 버퍼링이 필요하지 않다고 생각합니다. 스윙은 기본적으로 켜져있는 이중 버퍼링을 내장하고 있습니다. 수동으로이 작업을 수행하면 작업 속도가 느려집니다. 임의의 JComponents에서 isDoubleBufferingEnabled()를 호출하여 이중 버퍼링이 켜져 있는지 확인할 수 있습니다.

    자신이 직접 할 수도 있지만 규칙이 아닌 예외가 필요한 경우가 있습니다. 어쩌면 게임을 쓰는 것과 관련이있는 일을하는 것일 수도 있습니다.이 경우 내 조언이 적용되지 않을 수 있습니다. 어쨌든, 위의 정보가 유용합니다.