2013-06-17 5 views

답변

4

많은 이유가 있지만 많은 것은 사용중인 툴킷에 따라 다릅니다.

일반적으로 최상위 컨테이너에 paint을 사용하면 특정 컨테이너 (예 : Frame 또는 Applet)에 고정됩니다. 또한 창을 다른 창에 추가 할 수 없으므로 구성 요소를 다시 사용할 수 있습니다.

다른 문제는 대부분의 프레임에 테두리가 추가되어 있다는 것입니다 (일반적으로 제목 및 프레임 컨트롤이있는 프레임 테두리). 최상위 컨테이너에 페인팅하는 것은 이러한 인세 트를 고려하지 않습니다. 즉, 0x0 위치에 페인트하면 프레임의 제목 표시 줄 아래에 페인팅됩니다.

스윙에서 최상위 컨테이너는 이중 버퍼링되지 않습니다. 즉, 각 요소가 그래픽 레이어에 직접 렌더링 될 때마다 재 페인트가 깜박 거리는 경향이 있으며, 단일 패스로 그려지는 것이 아닙니다.

또한 Swing에서 최상위 컨테이너는 JRootPane으로 제어되며 컨테이너의 맨 위에있는 내용 창 (사용중인 경우 메뉴 막대)을 배치합니다. 즉, 이러한 구성 요소로 페인팅 작업을 재정의 할 수 있습니다.

구성 요소 페인트 레이어/체인이 더 유연하므로 다른 레이어에 페인트 할 수있는 기회를 추가 할 수도 있습니다. 일반적으로 말해서 paintComponent을 사용해야합니다.

관련 문제