고정 된 큰 (그러나 고정 된) 벡터 이미지를 그리고 이미지의 일부를 뷰 포트 (절대 위치가 아닌)에 상대적으로 표시해야하는 텍스트로 오버레이하는 스윙 구성 요소가 있음 - 고정 행으로 생각 함 Excel에서 라벨 (아래 그림 참조) :자바 스윙 클리핑 문제
Header
-- [some stuff] ----- [ some stuff] ----
Header2
----- [some stuff] ----- [ some stuff] ----
왼쪽에서 오른쪽으로 스크롤하는 경우를 제외하고는 정상적으로 작동합니다.
public void paintComponent(Graphics graphics) {
Graphics2D g = (Graphics2D)graphics;
Shape oldClip = g.getClip();
Rectangle clipBounds = getVisibleRect();
g.setClip(clipBounds);
drawMyImage();
drawMyHeaders();
g.setClip(oldClip);
}
그러나,이 작동하지 않습니다 그러나이 작업 표시되지 않습니다 - 나는 전체 뷰포트가 항상 그려되도록의 paintComponent() 메소드의 가시 영역에 클립 경계를 설정하려고 보이는 영역이 올바른 모양이지만 클립을 설정해도 아무 효과가 없습니다. 내가 무엇을 할 수 있을지?
clip: java.awt.Rectangle[x=1762,y=0,width=57,height=182] // clipped while scrolling
vis: java.awt.Rectangle[x=1762,y=0,width=582,height=182] // what I want to paint
'paintComponent'에서'setClip'을 사용하지 마십시오! 클리핑 영역은 Swing에서 사용됩니다. –
분명히 더 나은 접근법을 요구하고 있습니다. 그러나 가시 영역, 그리기, 복원에 아무런 해를 끼치 지 않아야합니다. 스윙은 스크롤하는 동안 클립이 더러운 영역으로 설정되어 그래픽 서브 컨텍스트를 제공 할 수 있도록합니다. – Justin