MetalTheme (Java SE 25 & JDK 25)
Description: declaration: module: java.desktop, package: javax.swing.plaf.metal, class: MetalTheme
Keywords: javax.swing.plaf.metal.MetalTheme class

# Class MetalTheme

java.lang.Object
javax.swing.plaf.metal.MetalTheme

Direct Known Subclasses:
  `DefaultMetalTheme`

public abstract class MetalTheme extends Object
`MetalTheme` provides the color palette and fonts used by the Java Look and Feel.

`MetalTheme` is abstract, see `DefaultMetalTheme` and `OceanTheme` for concrete implementations.

`MetalLookAndFeel` maintains the current theme that the the `ComponentUI` implementations for metal use. Refer to `MetalLookAndFeel.setCurrentTheme(MetalTheme)` for details on changing the current theme.

`MetalTheme` provides a number of public methods for getting colors. These methods are implemented in terms of a handful of protected abstract methods. A subclass need only override the protected abstract methods (`getPrimary1`, `getPrimary2`, `getPrimary3`, `getSecondary1`, `getSecondary2`, and `getSecondary3`); although a subclass may override the other public methods for more control over the set of colors that are used.

Concrete implementations of `MetalTheme` must return `non-null` values from all methods. While the behavior of returning `null` is not specified, returning `null` will result in incorrect behavior.

It is strongly recommended that subclasses return completely opaque colors. To do otherwise may result in rendering problems, such as visual garbage.

See Also:
  - `DefaultMetalTheme`
  - `OceanTheme`
  - `MetalLookAndFeel.setCurrentTheme(MetalTheme)`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `MetalTheme()`
  Constructor for subclasses to call.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addCustomEntriesToTable(UIDefaults table)`
  Adds values specific to this theme to the defaults table.
  `ColorUIResource`
  `getAcceleratorForeground()`
  Returns the accelerator foreground color.
  `ColorUIResource`
  `getAcceleratorSelectedForeground()`
  Returns the accelerator selected foreground color.
  `protected ColorUIResource`
  `getBlack()`
  Returns the black color.
  `ColorUIResource`
  `getControl()`
  Returns the control color.
  `ColorUIResource`
  `getControlDarkShadow()`
  Returns the control dark shadow color.
  `ColorUIResource`
  `getControlDisabled()`
  Returns the control disabled color.
  `ColorUIResource`
  `getControlHighlight()`
  Returns the control highlight color.
  `ColorUIResource`
  `getControlInfo()`
  Returns the control info color.
  `ColorUIResource`
  `getControlShadow()`
  Returns the control shadow color.
  `ColorUIResource`
  `getControlTextColor()`
  Returns the control text color.
  `abstract FontUIResource`
  `getControlTextFont()`
  Returns the control text font.
  `ColorUIResource`
  `getDesktopColor()`
  Returns the desktop color.
  `ColorUIResource`
  `getFocusColor()`
  Returns the focus color.
  `ColorUIResource`
  `getHighlightedTextColor()`
  Returns the highlighted text color.
  `ColorUIResource`
  `getInactiveControlTextColor()`
  Returns the inactive control text color.
  `ColorUIResource`
  `getInactiveSystemTextColor()`
  Returns the inactive system text color.
  `ColorUIResource`
  `getMenuBackground()`
  Returns the menu background color.
  `ColorUIResource`
  `getMenuDisabledForeground()`
  Returns the menu disabled foreground color.
  `ColorUIResource`
  `getMenuForeground()`
  Returns the menu foreground color.
  `ColorUIResource`
  `getMenuSelectedBackground()`
  Returns the menu selected background color.
  `ColorUIResource`
  `getMenuSelectedForeground()`
  Returns the menu selected foreground color.
  `abstract FontUIResource`
  `getMenuTextFont()`
  Returns the menu text font.
  `abstract String`
  `getName()`
  Returns the name of this theme.
  `protected abstract ColorUIResource`
  `getPrimary1()`
  Returns the primary 1 color.
  `protected abstract ColorUIResource`
  `getPrimary2()`
  Returns the primary 2 color.
  `protected abstract ColorUIResource`
  `getPrimary3()`
  Returns the primary 3 color.
  `ColorUIResource`
  `getPrimaryControl()`
  Returns the primary control color.
  `ColorUIResource`
  `getPrimaryControlDarkShadow()`
  Returns the primary control dark shadow color.
  `ColorUIResource`
  `getPrimaryControlHighlight()`
  Returns the primary control highlight color.
  `ColorUIResource`
  `getPrimaryControlInfo()`
  Returns the primary control info color.
  `ColorUIResource`
  `getPrimaryControlShadow()`
  Returns the primary control shadow color.
  `protected abstract ColorUIResource`
  `getSecondary1()`
  Returns the secondary 1 color.
  `protected abstract ColorUIResource`
  `getSecondary2()`
  Returns the secondary 2 color.
  `protected abstract ColorUIResource`
  `getSecondary3()`
  Returns the secondary 3 color.
  `ColorUIResource`
  `getSeparatorBackground()`
  Returns the separator background color.
  `ColorUIResource`
  `getSeparatorForeground()`
  Returns the separator foreground color.
  `abstract FontUIResource`
  `getSubTextFont()`
  Returns the sub-text font.
  `ColorUIResource`
  `getSystemTextColor()`
  Returns the system text color.
  `abstract FontUIResource`
  `getSystemTextFont()`
  Returns the system text font.
  `ColorUIResource`
  `getTextHighlightColor()`
  Returns the text highlight color.
  `ColorUIResource`
  `getUserTextColor()`
  Returns the user text color.
  `abstract FontUIResource`
  `getUserTextFont()`
  Returns the user text font.
  `protected ColorUIResource`
  `getWhite()`
  Returns the white color.
  `ColorUIResource`
  `getWindowBackground()`
  Returns the window background color.
  `ColorUIResource`
  `getWindowTitleBackground()`
  Returns the window title background color.
  `abstract FontUIResource`
  `getWindowTitleFont()`
  Returns the window title font.
  `ColorUIResource`
  `getWindowTitleForeground()`
  Returns the window title foreground color.
  `ColorUIResource`
  `getWindowTitleInactiveBackground()`
  Returns the window title inactive background color.
  `ColorUIResource`
  `getWindowTitleInactiveForeground()`
  Returns the window title inactive foreground color.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### MetalTheme

    protected MetalTheme()
    Constructor for subclasses to call.

- ## Method Details

  - ### getName

    public abstract String getName()
    Returns the name of this theme.
    Returns:
      the name of this theme

  - ### getPrimary1

    protected abstract ColorUIResource getPrimary1()
    Returns the primary 1 color.
    Returns:
      the primary 1 color

  - ### getPrimary2

    protected abstract ColorUIResource getPrimary2()
    Returns the primary 2 color.
    Returns:
      the primary 2 color

  - ### getPrimary3

    protected abstract ColorUIResource getPrimary3()
    Returns the primary 3 color.
    Returns:
      the primary 3 color

  - ### getSecondary1

    protected abstract ColorUIResource getSecondary1()
    Returns the secondary 1 color.
    Returns:
      the secondary 1 color

  - ### getSecondary2

    protected abstract ColorUIResource getSecondary2()
    Returns the secondary 2 color.
    Returns:
      the secondary 2 color

  - ### getSecondary3

    protected abstract ColorUIResource getSecondary3()
    Returns the secondary 3 color.
    Returns:
      the secondary 3 color

  - ### getControlTextFont

    public abstract FontUIResource getControlTextFont()
    Returns the control text font.
    Returns:
      the control text font

  - ### getSystemTextFont

    public abstract FontUIResource getSystemTextFont()
    Returns the system text font.
    Returns:
      the system text font

  - ### getUserTextFont

    public abstract FontUIResource getUserTextFont()
    Returns the user text font.
    Returns:
      the user text font

  - ### getMenuTextFont

    public abstract FontUIResource getMenuTextFont()
    Returns the menu text font.
    Returns:
      the menu text font

  - ### getWindowTitleFont

    public abstract FontUIResource getWindowTitleFont()
    Returns the window title font.
    Returns:
      the window title font

  - ### getSubTextFont

    public abstract FontUIResource getSubTextFont()
    Returns the sub-text font.
    Returns:
      the sub-text font

  - ### getWhite

    protected ColorUIResource getWhite()
    Returns the white color. This returns opaque white (`0xFFFFFFFF`).
    Returns:
      the white color

  - ### getBlack

    protected ColorUIResource getBlack()
    Returns the black color. This returns opaque black (`0xFF000000`).
    Returns:
      the black color

  - ### getFocusColor

    public ColorUIResource getFocusColor()
    Returns the focus color. This returns the value of `getPrimary2()`.
    Returns:
      the focus color

  - ### getDesktopColor

    public ColorUIResource getDesktopColor()
    Returns the desktop color. This returns the value of `getPrimary2()`.
    Returns:
      the desktop color

  - ### getControl

    public ColorUIResource getControl()
    Returns the control color. This returns the value of `getSecondary3()`.
    Returns:
      the control color

  - ### getControlShadow

    public ColorUIResource getControlShadow()
    Returns the control shadow color. This returns the value of `getSecondary2()`.
    Returns:
      the control shadow color

  - ### getControlDarkShadow

    public ColorUIResource getControlDarkShadow()
    Returns the control dark shadow color. This returns the value of `getSecondary1()`.
    Returns:
      the control dark shadow color

  - ### getControlInfo

    public ColorUIResource getControlInfo()
    Returns the control info color. This returns the value of `getBlack()`.
    Returns:
      the control info color

  - ### getControlHighlight

    public ColorUIResource getControlHighlight()
    Returns the control highlight color. This returns the value of `getWhite()`.
    Returns:
      the control highlight color

  - ### getControlDisabled

    public ColorUIResource getControlDisabled()
    Returns the control disabled color. This returns the value of `getSecondary2()`.
    Returns:
      the control disabled color

  - ### getPrimaryControl

    public ColorUIResource getPrimaryControl()
    Returns the primary control color. This returns the value of `getPrimary3()`.
    Returns:
      the primary control color

  - ### getPrimaryControlShadow

    public ColorUIResource getPrimaryControlShadow()
    Returns the primary control shadow color. This returns the value of `getPrimary2()`.
    Returns:
      the primary control shadow color

  - ### getPrimaryControlDarkShadow

    public ColorUIResource getPrimaryControlDarkShadow()
    Returns the primary control dark shadow color. This returns the value of `getPrimary1()`.
    Returns:
      the primary control dark shadow color

  - ### getPrimaryControlInfo

    public ColorUIResource getPrimaryControlInfo()
    Returns the primary control info color. This returns the value of `getBlack()`.
    Returns:
      the primary control info color

  - ### getPrimaryControlHighlight

    public ColorUIResource getPrimaryControlHighlight()
    Returns the primary control highlight color. This returns the value of `getWhite()`.
    Returns:
      the primary control highlight color

  - ### getSystemTextColor

    public ColorUIResource getSystemTextColor()
    Returns the system text color. This returns the value of `getBlack()`.
    Returns:
      the system text color

  - ### getControlTextColor

    public ColorUIResource getControlTextColor()
    Returns the control text color. This returns the value of `getControlInfo()`.
    Returns:
      the control text color

  - ### getInactiveControlTextColor

    public ColorUIResource getInactiveControlTextColor()
    Returns the inactive control text color. This returns the value of `getControlDisabled()`.
    Returns:
      the inactive control text color

  - ### getInactiveSystemTextColor

    public ColorUIResource getInactiveSystemTextColor()
    Returns the inactive system text color. This returns the value of `getSecondary2()`.
    Returns:
      the inactive system text color

  - ### getUserTextColor

    public ColorUIResource getUserTextColor()
    Returns the user text color. This returns the value of `getBlack()`.
    Returns:
      the user text color

  - ### getTextHighlightColor

    public ColorUIResource getTextHighlightColor()
    Returns the text highlight color. This returns the value of `getPrimary3()`.
    Returns:
      the text highlight color

  - ### getHighlightedTextColor

    public ColorUIResource getHighlightedTextColor()
    Returns the highlighted text color. This returns the value of `getControlTextColor()`.
    Returns:
      the highlighted text color

  - ### getWindowBackground

    public ColorUIResource getWindowBackground()
    Returns the window background color. This returns the value of `getWhite()`.
    Returns:
      the window background color

  - ### getWindowTitleBackground

    public ColorUIResource getWindowTitleBackground()
    Returns the window title background color. This returns the value of `getPrimary3()`.
    Returns:
      the window title background color

  - ### getWindowTitleForeground

    public ColorUIResource getWindowTitleForeground()
    Returns the window title foreground color. This returns the value of `getBlack()`.
    Returns:
      the window title foreground color

  - ### getWindowTitleInactiveBackground

    public ColorUIResource getWindowTitleInactiveBackground()
    Returns the window title inactive background color. This returns the value of `getSecondary3()`.
    Returns:
      the window title inactive background color

  - ### getWindowTitleInactiveForeground

    public ColorUIResource getWindowTitleInactiveForeground()
    Returns the window title inactive foreground color. This returns the value of `getBlack()`.
    Returns:
      the window title inactive foreground color

  - ### getMenuBackground

    public ColorUIResource getMenuBackground()
    Returns the menu background color. This returns the value of `getSecondary3()`.
    Returns:
      the menu background color

  - ### getMenuForeground

    public ColorUIResource getMenuForeground()
    Returns the menu foreground color. This returns the value of `getBlack()`.
    Returns:
      the menu foreground color

  - ### getMenuSelectedBackground

    public ColorUIResource getMenuSelectedBackground()
    Returns the menu selected background color. This returns the value of `getPrimary2()`.
    Returns:
      the menu selected background color

  - ### getMenuSelectedForeground

    public ColorUIResource getMenuSelectedForeground()
    Returns the menu selected foreground color. This returns the value of `getBlack()`.
    Returns:
      the menu selected foreground color

  - ### getMenuDisabledForeground

    public ColorUIResource getMenuDisabledForeground()
    Returns the menu disabled foreground color. This returns the value of `getSecondary2()`.
    Returns:
      the menu disabled foreground color

  - ### getSeparatorBackground

    public ColorUIResource getSeparatorBackground()
    Returns the separator background color. This returns the value of `getWhite()`.
    Returns:
      the separator background color

  - ### getSeparatorForeground

    public ColorUIResource getSeparatorForeground()
    Returns the separator foreground color. This returns the value of `getPrimary1()`.
    Returns:
      the separator foreground color

  - ### getAcceleratorForeground

    public ColorUIResource getAcceleratorForeground()
    Returns the accelerator foreground color. This returns the value of `getPrimary1()`.
    Returns:
      the accelerator foreground color

  - ### getAcceleratorSelectedForeground

    public ColorUIResource getAcceleratorSelectedForeground()
    Returns the accelerator selected foreground color. This returns the value of `getBlack()`.
    Returns:
      the accelerator selected foreground color

  - ### addCustomEntriesToTable

    public void addCustomEntriesToTable(UIDefaults table)
    Adds values specific to this theme to the defaults table. This method is invoked when the look and feel defaults are obtained from `MetalLookAndFeel`.

    This implementation does nothing; it is provided for subclasses that wish to customize the defaults table.

    Parameters:
      `table` - the `UIDefaults` to add the values to
    See Also:
      - `MetalLookAndFeel.getDefaults()`