MetalRootPaneUI
MetalRootPaneUI
RootPaneUI의 메탈 Look and Feel 구현을 제공해요. MetalRootPaneUI는 JRootPane의 windowDecorationStyle 속성에 대한 지원을 제공해요.
MetalRootPaneUI는 커스텀 LayoutManager, 위젯을 렌더링할 private Component, 그리고 private Border를 설치하는 방식으로 이를 수행해요. LayoutManager는 windowDecorationStyle 속성의 값과 관계없이 항상 설치되지만, Border와 Component는 windowDecorationStyle이 JRootPane.NONE이 아닐 때만 설치/추가돼요.
경고: 이 클래스의 직렬화된 객체는 향후 Swing 릴리스와 호환되지 않을 거예요. 현재 직렬화 지원은 같은 버전의 Swing을 실행하는 애플리케이션 간의 단기 저장 또는 RMI에 적절해요. 1.4부터 모든 JavaBean의 장기 저장 지원이
java.beans패키지에 추가되었어요.XMLEncoder를 참조하세요.
본문
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구현을 호출해요.JRootPane의windowDecorationStyle속성이JRootPane.NONE이 아니면 위젯을 렌더링할 커스텀Component를JRootPane에 추가하고, 커스텀Border와LayoutManager를 설치해요.uninstallUI(JComponent c)— super의 구현을 호출해 자체 상태를 해제해요. 이때JRootPane의LayoutManager도 재설정해요. 창 장식 스타일을 렌더링하기 위해JRootPane에 추가된Component가 있으면 이를 제거하고,Border와LayoutManager를installUI가 호출되기 전의 상태로 되돌려요.propertyChange(PropertyChangeEvent e)— 속성이 변경될 때 호출돼요. 주로 설치된JRootPane에서 오는windowDecorationStyle속성을 다루죠. 값이JRootPane.NONE이 아닌 값으로 바뀌면 창 장식을 렌더링할Component를 추가하고Border를 설치해요. 반대로JRootPane.NONE으로 바뀌면 추가된Component를 제거하고Border를installUI이전 상태로 되돌려요.