MetalRootPaneUI

MetalRootPaneUI

RootPaneUI의 메탈 Look and Feel 구현을 제공해요. MetalRootPaneUIJRootPanewindowDecorationStyle 속성에 대한 지원을 제공해요.

MetalRootPaneUI는 커스텀 LayoutManager, 위젯을 렌더링할 private Component, 그리고 private Border를 설치하는 방식으로 이를 수행해요. LayoutManagerwindowDecorationStyle 속성의 값과 관계없이 항상 설치되지만, BorderComponentwindowDecorationStyleJRootPane.NONE이 아닐 때만 설치/추가돼요.

경고: 이 클래스의 직렬화된 객체는 향후 Swing 릴리스와 호환되지 않을 거예요. 현재 직렬화 지원은 같은 버전의 Swing을 실행하는 애플리케이션 간의 단기 저장 또는 RMI에 적절해요. 1.4부터 모든 JavaBean의 장기 저장 지원이 java.beans 패키지에 추가되었어요. XMLEncoder를 참조하세요.

출처: Java API Reference

본문

MetalRootPaneUI는 루트 페인(JRootPane)에 메탈 Look and Feel를 적용하며, 특히 창 장식(창 제목 표시줄, 최소화/최대화 버튼 등)을 렌더링하기 위한 위젯을 제공해요.

대표적인 시그니처는 다음과 같아요.

public MetalRootPaneUI()
public static ComponentUI createUI(JComponent c)
public void installUI(JComponent c)
public void uninstallUI(JComponent c)
public void propertyChange(PropertyChangeEvent e)

주요 메서드의 동작을 살펴볼게요.

  • installUI(JComponent c) — 메탈 Look and Feel 구현의 RootPaneUI를 렌더링하기 위해 필요한 상태를 전달받은 JRootPane에 설치하기 위해 super의 installUI 구현을 호출해요. JRootPanewindowDecorationStyle 속성이 JRootPane.NONE이 아니면 위젯을 렌더링할 커스텀 ComponentJRootPane에 추가하고, 커스텀 BorderLayoutManager를 설치해요.
  • uninstallUI(JComponent c) — super의 구현을 호출해 자체 상태를 해제해요. 이때 JRootPaneLayoutManager도 재설정해요. 창 장식 스타일을 렌더링하기 위해 JRootPane에 추가된 Component가 있으면 이를 제거하고, BorderLayoutManagerinstallUI가 호출되기 전의 상태로 되돌려요.
  • propertyChange(PropertyChangeEvent e) — 속성이 변경될 때 호출돼요. 주로 설치된 JRootPane에서 오는 windowDecorationStyle 속성을 다루죠. 값이 JRootPane.NONE이 아닌 값으로 바뀌면 창 장식을 렌더링할 Component를 추가하고 Border를 설치해요. 반대로 JRootPane.NONE으로 바뀌면 추가된 Component를 제거하고 BorderinstallUI 이전 상태로 되돌려요.

더 알아보기