MetalTheme
MetalTheme
MetalTheme은 Java Look and Feel가 사용하는 색상 팔레트와 폰트를 제공해요. MetalTheme은 추상 클래스이며, 구체적인 구현은 DefaultMetalTheme과 OceanTheme을 참조하세요.
MetalLookAndFeel은 메탈의 ComponentUI 구현들이 사용하는 현재 테마를 유지해요. 현재 테마 변경에 대한 자세한 내용은 MetalLookAndFeel.setCurrentTheme(MetalTheme)을 참조하세요.
MetalTheme은 색상을 얻기 위한 여러 public 메서드를 제공해요. 이 메서드들은 소수의 protected 추상 메서드로 구현돼요. 하위 클래스는 protected 추상 메서드(getPrimary1, getPrimary2, getPrimary3, getSecondary1, getSecondary2, getSecondary3)만 재정의하면 되죠. 물론 더 많은 제어를 위해 다른 public 메서드를 재정의할 수도 있어요.
참고:
MetalTheme의 구체적인 구현은 모든 메서드에서 null이 아닌 값을 반환해야 해요. null을 반환하는 동작은 명시되지 않지만, null을 반환하면 잘못된 동작이 발생해요. 하위 클래스가 완전히 불투명한(opaque) 색상을 반환하는 것을 강력히 권장해요. 그렇지 않으면 시각적 쓰레기와 같은 렌더링 문제가 발생할 수 있어요.
본문
MetalTheme은 메탈 Look and Feel에서 사용되는 모든 색상과 폰트의 원천이 되는 추상 기본 클래스예요. 테마별로 primary/secondary 색상 그룹과 각 컨트롤의 전경/배경 색상, 텍스트 폰트 등을 정의해요.
대표적인 시그니처는 다음과 같아요.
protected MetalTheme()
public abstract String getName()
protected abstract ColorUIResource getPrimary1()
protected abstract ColorUIResource getPrimary2()
protected abstract ColorUIResource getPrimary3()
protected abstract ColorUIResource getSecondary1()
protected abstract ColorUIResource getSecondary2()
protected abstract ColorUIResource getSecondary3()
public abstract FontUIResource getControlTextFont()
public abstract FontUIResource getSystemTextFont()
public abstract FontUIResource getUserTextFont()
public abstract FontUIResource getMenuTextFont()
public abstract FontUIResource getWindowTitleFont()
public abstract FontUIResource getSubTextFont()
protected ColorUIResource getWhite()
protected ColorUIResource getBlack()
public ColorUIResource getFocusColor()
public ColorUIResource getDesktopColor()
public ColorUIResource getControl()
public ColorUIResource getControlShadow()
주요 메서드의 기본 구현을 살펴볼게요.
getName()— 이 테마의 이름을 반환해요.getPrimary1()/getPrimary2()/getPrimary3()— primary 1/2/3 색상을 반환해요.getSecondary1()/getSecondary2()/getSecondary3()— secondary 1/2/3 색상을 반환해요.getWhite()— 불투명한 흰색(0xFFFFFFFF)을 반환해요.getBlack()— 불투명한 검은색(0xFF000000)을 반환해요.getFocusColor()—getPrimary2()의 값을 반환해요.getDesktopColor()—getPrimary2()의 값을 반환해요.getControl()—getSecondary3()의 값을 반환해요.getControlShadow()—getSecondary2()의 값을 반환해요.getControlDarkShadow()—getSecondary1()의 값을 반환해요.getControlInfo()—getBlack()의 값을 반환해요.getControlHighlight()—getWhite()의 값을 반환해요.getWindowBackground()—getWhite()의 값을 반환해요.getWindowTitleBackground()—getPrimary3()의 값을 반환해요.addCustomEntriesToTable(UIDefaults table)— 이 테마에 특정한 값을 defaults 테이블에 추가해요.MetalLookAndFeel에서 Look and Feel defaults를 얻을 때 호출돼요. 기본 구현은 아무것도 하지 않으며, defaults 테이블을 커스터마이즈하려는 하위 클래스를 위해 제공돼요.