JViewport

JViewport (기본 정보를 보는 뷰포트)

기본 정보를 보는 "뷰포트" 또는 "현창(porthole)"입니다. 스크롤할 때 움직이는 것은 뷰포트입니다. 카메라의 뷰파인더를 들여다보는 것과 같습니다.

출처: Java API Reference

본문

기본 정보를 보는 "뷰포트" 또는 "현창"입니다. 스크롤할 때 움직이는 것은 뷰포트로, 뷰파인더를 위로 움직이면 그림 위쪽에 새로운 것들이 보이고 아래쪽에 있던 것들이 사라집니다. 기본적으로 JViewport는 불투명하며, setOpaque 메서드로 변경할 수 있습니다.

public class JViewport extends JComponent implements Accessible

버퍼가 필요 없는 더 빠른 스크롤 알고리즘을 구현했습니다. 알고리즘은 다음과 같이 동작합니다.

  • 뷰와 부모 뷰가 JComponent인지 확인하고, 아니면 멈추고 전체 뷰포트를 다시 그립니다.
  • 뷰포트가 조상에 가려져 있으면 멈추고 전체 뷰포트를 다시 그립니다.
  • 표시될 영역을 계산하고, 그것이 뷰포트만큼 크면 멈추고 전체 뷰 영역을 다시 그립니다.
  • 조상 Window의 그래픽스를 얻어 스크롤된 영역에 copyArea를 수행합니다.
  • 새로 표시된 영역을 다시 그리도록 뷰에 메시지를 보냅니다.

일반적으로 이 접근 방식이 훨씬 빠릅니다. 백킹 스토어 방식에 비해 오프스크린 버퍼를 유지하고 두 번의 copyArea를 해야 하는 오버헤드를 피하며, 버퍼가 없는 경우에 비해 그려지는 영역을 크게 줄입니다.

뷰포트가 다른 창에 가려져 있거나 일부가 화면 밖에 있을 때는 이 방식이 백킹 스토어 방식보다 느려질 수 있습니다. 하지만 대부분의 애플리케이션에서 사용자는 뷰포트가 창에 가려져 있거나 화면 밖에 있는 동안 스크롤하는 경우가 매우 드물기 때문에 이 최적화는 대개 가치가 있습니다.

Swing은 스레드에 안전하지 않습니다. 이 클래스의 직렬화된 객체는 향후 Swing 릴리스와 호환되지 않을 수 있습니다.

더 알아보기 (Learn more)

Java 공식 API