paint()
메서드를 top-level container (JFrame
)으로 재정의하는 것은 왜 끔찍한가요? 어떤 종류의 문제가 발생할 수 있습니까?최상위 컨테이너의 페인트를 그렇게 무시하는 이유는 무엇입니까?
2
A
답변
4
많은 이유가 있지만 많은 것은 사용중인 툴킷에 따라 다릅니다.
일반적으로 최상위 컨테이너에 paint
을 사용하면 특정 컨테이너 (예 : Frame
또는 Applet
)에 고정됩니다. 또한 창을 다른 창에 추가 할 수 없으므로 구성 요소를 다시 사용할 수 있습니다.
다른 문제는 대부분의 프레임에 테두리가 추가되어 있다는 것입니다 (일반적으로 제목 및 프레임 컨트롤이있는 프레임 테두리). 최상위 컨테이너에 페인팅하는 것은 이러한 인세 트를 고려하지 않습니다. 즉, 0x0 위치에 페인트하면 프레임의 제목 표시 줄 아래에 페인팅됩니다.
스윙에서 최상위 컨테이너는 이중 버퍼링되지 않습니다. 즉, 각 요소가 그래픽 레이어에 직접 렌더링 될 때마다 재 페인트가 깜박 거리는 경향이 있으며, 단일 패스로 그려지는 것이 아닙니다.
또한 Swing에서 최상위 컨테이너는 JRootPane
으로 제어되며 컨테이너의 맨 위에있는 내용 창 (사용중인 경우 메뉴 막대)을 배치합니다. 즉, 이러한 구성 요소로 페인팅 작업을 재정의 할 수 있습니다.
구성 요소 페인트 레이어/체인이 더 유연하므로 다른 레이어에 페인트 할 수있는 기회를 추가 할 수도 있습니다. 일반적으로 말해서 paintComponent
을 사용해야합니다.
관련 문제
- 1. Swing에서 루트 창과 최상위 컨테이너의 차이점은 무엇입니까?
- 2. my.class.js가 그렇게 빠른 이유는 무엇입니까?
- 3. n900이 그렇게 특별한 이유는 무엇입니까?
- 4. PayPal이 discount_amount_cart를 무시하는 이유는 무엇입니까?
- 5. IE8이 배경색을 무시하는 이유는 무엇입니까?
- 6. NHibernate가 FetchMode.Join을 무시하는 이유는 무엇입니까?
- 7. XhtmlTextWriter가 사용자 지정 특성을 무시하는 이유는 무엇입니까?
- 8. MD5Sum이 왜 그렇게 빠른 이유는 무엇입니까?
- 9. VS11 베타 버전이 그렇게 빠른 이유는 무엇입니까?
- 10. Document.html()이 그렇게 느린 이유는 무엇입니까?
- 11. Google 검색 순위가 그렇게 나쁜 이유는 무엇입니까?
- 12. 빈 MongoDB 데이터베이스가 그렇게 큰 이유는 무엇입니까?
- 13. 목록 이해가 파이썬에서 그렇게 불리는 이유는 무엇입니까?
- 14. jQueryUI. 인터페이스가 그렇게 큰 이유는 무엇입니까?
- 15. 내 GLSL 버전이 그렇게 낮은 이유는 무엇입니까?
- 16. 후속 쿼리가 왜 그렇게 느린 이유는 무엇입니까?
- 17. 단위 테스트가 민첩성에서 그렇게 중요한 이유는 무엇입니까?
- 18. 컨테이너의 생성자에 용량 인수가없는 이유는 무엇입니까?
- 19. 최상위 구성 요소 만 렌더링되는 이유는 무엇입니까?
- 20. 최상위 수준에서 열거 형을 선언해야하는 이유는 무엇입니까?
- 21. Django가 Accept-Language 헤더를 무시하는 이유는 무엇입니까?
- 22. C# Bitmap.Save가 Bitmap의 PixelFormat을 무시하는 이유는 무엇입니까?
- 23. Hibernate가 package-info.java를 무시하는 이유는 무엇입니까?
- 24. ORDER BY로 Oracle에서 색인을 무시하는 이유는 무엇입니까?
- 25. TinyMCE가 적용되는 클래스 스타일을 무시하는 이유는 무엇입니까?
- 26. Qt5가 xkb 매핑을 무시하는 이유는 무엇입니까?
- 27. 내 하위 디렉토리를 무시하는 이유는 무엇입니까?
- 28. Google 크롬이 내 스타일을 무시하는 이유는 무엇입니까?
- 29. HttpListener가 외부 요청을 무시하는 이유는 무엇입니까?
- 30. 장고가 내 ROOT_URLCONF 설정을 무시하는 이유는 무엇입니까?
경험상 이미지가 올바르게 그려지지 않고 JPanel에서 그려야했습니다. –