MetalTabbedPaneUI

MetalTabbedPaneUI

BasicTabbedPaneUI의 Metal 하위 클래스예요.

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

이 클래스는 "protected" 내부 클래스로 취급되어야 해요.

출처: Java API Reference

본문

MetalTabbedPaneUI는 탭 페인(JTabbedPane)에 메탈 Look and Feel를 적용하는 UI 클래스예요. 탭 위/아래/좌/우 테두리와 탭 사이의 간격(gap) 처리를 담당해요.

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

protected int minTabWidth
protected Color tabAreaBackground
protected Color selectColor
protected Color selectHighlight
public MetalTabbedPaneUI()
public static ComponentUI createUI(JComponent x)
protected void paintTopTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)
protected boolean shouldFillGap(int currentRun, int tabIndex, int x, int y)
protected Color getColorForGap(int currentRun, int x, int y)
protected void paintLeftTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)
protected void paintBottomTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)
protected void paintRightTabBorder(int tabIndex, Graphics g, int x, int y, int w, int h, int btm, int rght, boolean isSelected)
protected int getTabLabelShiftX(int tabPlacement, int tabIndex, boolean isSelected)
protected int getTabLabelShiftY(int tabPlacement, int tabIndex, boolean isSelected)
protected int getBaselineOffset()
protected void paintHighlightBelowTab()
protected boolean shouldRotateTabRuns(int tabPlacement, int selectedRun)

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

  • minTabWidth — 페인의 최소 너비예요.
  • tabAreaBackground — 탭의 배경 색상이에요.
  • selectColor — 선택된 페인의 색상이에요.
  • selectHighlight — 하이라이트의 색상이에요.
  • paintTopTabBorder, paintLeftTabBorder, paintBottomTabBorder, paintRightTabBorder — 각각 탭의 위/왼쪽/아래/오른쪽 테두리를 그려요.
  • shouldFillGap(...) — 간격을 채워야 하면 true를 반환해요.
  • getColorForGap(...) — 간격의 색상을 반환해요.
  • getBaselineOffset() — 베이스라인이 오프셋된 양을 반환해요. 일반적으로 getTabLabelShiftY와 같아요.
  • paintHighlightBelowTab() — 탭 아래의 하이라이트를 그려요.
  • shouldRotateTabRuns(...) — 탭 실행(tab run)이 회전되어야 하면 true를 반환해요.

더 알아보기