Класс MetalLookAndFeel
- Все реализуемые интерфейсы:
Serializable
public class MetalLookAndFeel extends BasicLookAndFeel
Каждый из ComponentUI методов, предоставляемых
MetalLookAndFeel, наследует свое поведение из таблицы по умолчанию. Если не указано иное, каждое из ComponentUI реализаций в этом пакете документирует набор используемых значений по умолчанию. Если не указано иное, значения по умолчанию устанавливаются в момент вызова installUI, и следуют рекомендациям, изложенным в LookAndFeel для установки значений по умолчанию.
MetalLookAndFeel получает свою цветовую палитру и шрифты из MetalTheme. Тема по умолчанию — OceanTheme. Тему можно изменить с помощью метода setCurrentTheme, обратитесь к нему за подробностями по изменению темы. До версии 1.5 темой по умолчанию была DefaultMetalTheme. Системная переменная "swing.metalTheme" может быть установлена в "steel" для указания того, что значение по умолчанию должно быть DefaultMetalTheme.
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими версиями Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, использующими одну и ту же версию Swing. С версии 1.4 добавлена поддержка долгосрочного хранения всех JavaBeans в пакете java.beans. Обратитесь к XMLEncoder.
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
MetalLookAndFeel() |
Создает MetalLookAndFeel. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
protected void |
createDefaultTheme() |
Обеспечивает, что текущий MetalTheme является non-null. |
static ColorUIResource |
getAcceleratorForeground() |
Возвращает цвет переднего плана ускорителя текущей темы. |
static ColorUIResource |
getAcceleratorSelectedForeground() |
Возвращает цвет выделенного переднего плана ускорителя текущей темы. |
static ColorUIResource |
getBlack() |
Возвращает черный цвет текущей темы. |
static ColorUIResource |
getControl() |
Возвращает цвет элемента управления текущей темы. |
static ColorUIResource |
getControlDarkShadow() |
Возвращает цвет тёмной тени элемента управления текущей темы. |
static ColorUIResource |
getControlDisabled() |
Возвращает цвет элемента управления, когда он неактивен, текущей темы. |
static ColorUIResource |
getControlHighlight() |
Возвращает цвет выделения элемента управления текущей темы. |
static ColorUIResource |
getControlInfo() |
Возвращает цвет информации элемента управления текущей темы. |
static ColorUIResource |
getControlShadow() |
Возвращает цвет тени элемента управления текущей темы. |
static ColorUIResource |
getControlTextColor() |
Возвращает цвет текста элемента управления текущей темы. |
static FontUIResource |
getControlTextFont() |
Возвращает шрифт текста элемента управления текущей темы. |
static MetalTheme |
getCurrentTheme() |
Возвращает тему, в настоящее время используемую MetalLookAndFeel. |
UIDefaults |
getDefaults() |
Возвращает значения по умолчанию для внешнего вида. |
String |
getDescription() |
Возвращает краткое описание этого внешнего вида. |
static ColorUIResource |
getDesktopColor() |
Возвращает цвет рабочего стола текущей темы. |
Icon |
getDisabledIcon |
Возвращает Icon с отключенным видом. |
Icon |
getDisabledSelectedIcon |
Возвращает Icon для использования отключенными компонентами, которые также выбраны. |
static ColorUIResource |
getFocusColor() |
Возвращает цвет фокуса текущей темы. |
static ColorUIResource |
getHighlightedTextColor() |
Возвращает цвет выделенного текста текущей темы. |
String |
getID() |
Возвращает идентификатор этого внешнего вида. |
static ColorUIResource |
getInactiveControlTextColor() |
Возвращает цвет текста неактивного элемента управления текущей темы. |
static ColorUIResource |
getInactiveSystemTextColor() |
Возвращает цвет неактивного системного текста текущей темы. |
LayoutStyle |
getLayoutStyle() |
Возвращает LayoutStyle, соответствующий принципам дизайна внешнего вида Java. |
static ColorUIResource |
getMenuBackground() |
Возвращает цвет фона меню текущей темы. |
static ColorUIResource |
getMenuDisabledForeground() |
Возвращает цвет переднего плана отключенного меню текущей темы. |
static ColorUIResource |
getMenuForeground() |
Возвращает цвет переднего плана меню текущей темы. |
static ColorUIResource |
getMenuSelectedBackground() |
Возвращает цвет фона выбранного меню текущей темы. |
static ColorUIResource |
getMenuSelectedForeground() |
Возвращает цвет переднего плана выбранного меню текущей темы. |
static FontUIResource |
getMenuTextFont() |
Возвращает шрифт текста меню текущей темы. |
String |
getName() |
Возвращает имя этого внешнего вида. |
static ColorUIResource |
getPrimaryControl() |
Возвращает основной цвет элемента управления текущей темы. |
static ColorUIResource |
getPrimaryControlDarkShadow() |
Возвращает основной цвет тёмной тени элемента управления текущей темы. |
static ColorUIResource |
getPrimaryControlHighlight() |
Возвращает основной цвет выделения элемента управления текущей темы. |
static ColorUIResource |
getPrimaryControlInfo() |
Возвращает основной цвет информации элемента управления текущей темы. |
static ColorUIResource |
getPrimaryControlShadow() |
Возвращает основной цвет тени элемента управления текущей темы. |
static ColorUIResource |
getSeparatorBackground() |
Возвращает цвет фона разделителя текущей темы. |
static ColorUIResource |
getSeparatorForeground() |
Возвращает цвет переднего плана разделителя текущей темы. |
static FontUIResource |
getSubTextFont() |
Возвращает шрифт подстрочного текста текущей темы. |
boolean |
getSupportsWindowDecorations() |
Возвращает true; металл может предоставлять Window декорации. |
static ColorUIResource |
getSystemTextColor() |
Возвращает цвет системного текста текущей темы. |
static FontUIResource |
getSystemTextFont() |
Возвращает шрифт системного текста текущей темы. |
static ColorUIResource |
getTextHighlightColor() |
Возвращает цвет выделения текста текущей темы. |
static ColorUIResource |
getUserTextColor() |
Возвращает цвет текста пользователя текущей темы. |
static FontUIResource |
getUserTextFont() |
Возвращает шрифт текста пользователя текущей темы. |
static ColorUIResource |
getWhite() |
Возвращает белый цвет текущей темы. |
static ColorUIResource |
getWindowBackground() |
Возвращает цвет фона окна текущей темы. |
static ColorUIResource |
getWindowTitleBackground() |
Возвращает цвет фона заголовка окна текущей темы. |
static FontUIResource |
getWindowTitleFont() |
Возвращает шрифт заголовка окна текущей темы. |
static ColorUIResource |
getWindowTitleForeground() |
Возвращает цвет переднего плана заголовка окна текущей темы. |
static ColorUIResource |
getWindowTitleInactiveBackground() |
Возвращает цвет неактивного фона заголовка окна текущей темы. |
static ColorUIResource |
getWindowTitleInactiveForeground() |
Возвращает цвет неактивного переднего плана заголовка окна текущей темы. |
protected void |
initClassDefaults |
Заполняет table соответствиями от uiClassID до полного квалифицированного имени класса ui. |
protected void |
initComponentDefaults |
Заполняет table значениями по умолчанию для метала. |
protected void |
initSystemColorDefaults |
Заполняет table системными цветами. |
boolean |
isNativeLookAndFeel() |
Возвращает false; MetalLookAndFeel не является родным внешним видом. |
boolean |
isSupportedLookAndFeel() |
Возвращает true; MetalLookAndFeel может быть запущен на любой платформе. |
void |
provideErrorFeedback |
Вызывается, когда пользователь пытается выполнить недопустимую операцию, например, вставить в нередактируемый JTextField с фокусом. |
static void |
setCurrentTheme |
Устанавливает тему, используемую MetalLookAndFeel. |
Методы, унаследованные от класса javax.swing.plaf.basic.BasicLookAndFeel
createAudioAction, getAudioActionMap, loadSystemColors, playSound
Методы, унаследованные от класса javax.swing.LookAndFeel
getDesktopPropertyValue, initialize, installBorder, installColors, installColorsAndFont, installProperty, loadKeyBindings, makeComponentInputMap, makeIcon, makeInputMap, makeKeyBindings, toString, uninitialize, uninstallBorder
Краткое описание конструкторов
MetalLookAndFeel
public MetalLookAndFeel()
MetalLookAndFeel.Краткое описание методов
getName
public String getName()
"Metal".- Указано в:
-
getNameв классеLookAndFeel - Возвращает:
- имя этого стиля оформления
getID
public String getID()
"Metal".- Указано в:
-
getIDв классеLookAndFeel - Возвращает:
- идентификатор этого стиля оформления
getDescription
public String getDescription()
"The Java(tm) Look and Feel".- Указано в:
-
getDescriptionв классеLookAndFeel - Возвращает:
- краткое описание стиля оформления
isNativeLookAndFeel
public boolean isNativeLookAndFeel()
false; MetalLookAndFeel не является нативным стилем оформления.- Указано в:
-
isNativeLookAndFeelв классеLookAndFeel - Возвращает:
false
isSupportedLookAndFeel
public boolean isSupportedLookAndFeel()
true; MetalLookAndFeel может работать на любой платформе.- Указано в:
-
isSupportedLookAndFeelв классеLookAndFeel - Возвращает:
true- См. также:
getSupportsWindowDecorations
public boolean getSupportsWindowDecorations()
true; metal может предоставлять Window элементы оформления.- Переопределяет:
-
getSupportsWindowDecorationsв классеLookAndFeel - Возвращает:
true- С версии:
- 1.4
- См. также:
initClassDefaults
protected void initClassDefaults(UIDefaults table)
table соответствиями из uiClassID к полному имени класса пользовательского интерфейса.
MetalLookAndFeel регистрирует запись для каждого из классов в пакете javax.swing.plaf.metal, которые называются MetalXXXUI. Строка XXX является одним из uiClassIDs Swing. Для uiClassIDs, которые не имеют класса в metal, используется соответствующий класс в javax.swing.plaf.basic. Например, metal не имеет класса с именем
"MetalColorChooserUI", поэтому используется
javax.swing.plaf.basic.BasicColorChooserUI.- Переопределяет:
-
initClassDefaultsв классеBasicLookAndFeel - Параметры:
-
table- экземплярUIDefaults, в который добавляются записи - Исключения:
-
NullPointerException- еслиtableявляетсяnull - См. также:
initSystemColorDefaults
protected void initSystemColorDefaults(UIDefaults table)
table системными цветами. В table добавляются следующие значения: | Ключ | Значение |
|---|---|
| "desktop" |
theme.getDesktopColor() |
| "activeCaption" |
theme.getWindowTitleBackground() |
| "activeCaptionText" |
theme.getWindowTitleForeground() |
| "activeCaptionBorder" |
theme.getPrimaryControlShadow() |
| "inactiveCaption" |
theme.getWindowTitleInactiveBackground() |
| "inactiveCaptionText" |
theme.getWindowTitleInactiveForeground() |
| "inactiveCaptionBorder" |
theme.getControlShadow() |
| "window" |
theme.getWindowBackground() |
| "windowBorder" |
theme.getControl() |
| "windowText" |
theme.getUserTextColor() |
| "menu" |
theme.getMenuBackground() |
| "menuText" |
theme.getMenuForeground() |
| "text" |
theme.getWindowBackground() |
| "textText" |
theme.getUserTextColor() |
| "textHighlight" |
theme.getTextHighlightColor() |
| "textHighlightText" |
theme.getHighlightedTextColor() |
| "textInactiveText" |
theme.getInactiveSystemTextColor() |
| "control" |
theme.getControl() |
| "controlText" |
theme.getControlTextColor() |
| "controlHighlight" |
theme.getControlHighlight() |
| "controlLtHighlight" |
theme.getControlHighlight() |
| "controlShadow" |
theme.getControlShadow() |
| "controlDkShadow" |
theme.getControlDarkShadow() |
| "scrollbar" |
theme.getControl() |
| "info" |
theme.getPrimaryControl() |
| "infoText" |
theme.getPrimaryControlInfo() |
theme соответствует текущему MetalTheme.- Переопределяет:
-
initSystemColorDefaultsв классеBasicLookAndFeel - Параметры:
-
table- объектUIDefaults, в который добавляются значения - Исключения:
-
NullPointerException- еслиtableявляетсяnull - См. также:
initComponentDefaults
protected void initComponentDefaults(UIDefaults table)
table значениями по умолчанию для metal.- Переопределяет:
-
initComponentDefaultsв классеBasicLookAndFeel - Параметры:
-
table- объектUIDefaults, в который добавляются значения - Исключения:
-
NullPointerException- еслиtableявляетсяnull
createDefaultTheme
protected void createDefaultTheme()
MetalTheme была non-null. Это метод-обертка для getCurrentTheme.- См. также:
getDefaults
public UIDefaults getDefaults()
createDefaultTheme(), super.getDefaults() и getCurrentTheme().addCustomEntriesToTable(table). Хотя этот метод является общедоступным, он должен вызываться только UIManager, когда стиль оформления установлен в качестве текущего стиля оформления и после вызова initialize.
- Переопределяет:
-
getDefaultsв классеBasicLookAndFeel - Возвращает:
- значения по умолчанию для стиля оформления
- См. также:
provideErrorFeedback
public void provideErrorFeedback(Component component)
JTextField, имеющее фокус. Реализация по умолчанию подает звуковой сигнал. Подклассы, которые хотят использовать другое поведение, должны переопределить этот метод и предоставить дополнительную обратную связь.- Переопределяет:
-
provideErrorFeedbackв классеLookAndFeel - Параметры:
-
component- компонентComponent, в котором произошла ошибка; может бытьnull, указывающее, что условие ошибки не связано напрямую с компонентомComponent - С версии:
- 1.4
setCurrentTheme
public static void setCurrentTheme(MetalTheme theme)
MetalLookAndFeel. После установки темы необходимо переустановить MetalLookAndFeel и пересоздать пользовательские интерфейсы. Ниже показано, как это сделать:
MetalLookAndFeel.setCurrentTheme(theme); // re-install the Metal Look and Feel UIManager.setLookAndFeel(new MetalLookAndFeel()); // Update the ComponentUIs for all Components. This // needs to be invoked for all windows. SwingUtilities.updateComponentTreeUI(rootComponent);В противном случае результаты не определены.
- Параметры:
-
theme- используемая тема - Исключения:
-
NullPointerException- еслиthemeявляетсяnull - См. также:
getCurrentTheme
public static MetalTheme getCurrentTheme()
MetalLookAndFeel. Если текущая тема null, создается тема по умолчанию.- Возвращает:
- текущую тему
- С:
- 1.5
- См. также:
getDisabledIcon
public Icon getDisabledIcon(JComponent component, Icon icon)
Icon с отключенным внешним видом. Этот метод используется для генерации отключенного Icon в случае, если он не был задан. Например, если вы создаете JButton и задаете только Icon через setIcon, этот метод будет вызван для генерации отключенного Icon. Если в качестве icon передается null, этот метод возвращает null. Некоторые стили отображения могут не отображать отключенную иконку, в этом случае они проигнорируют этот метод.
- Переопределяет:
-
getDisabledIconв классеLookAndFeel - Параметры:
-
component- JComponent, на котором будет отображаться иконка, может быть null -
icon- Иконка, для генерации отключенной иконки. - Возвращает:
- Отключенная иконка или null, если подходящая иконка не может быть сгенерирована.
- С:
- 1.5
getDisabledSelectedIcon
public Icon getDisabledSelectedIcon(JComponent component, Icon icon)
Icon для использования компонентами с отключенным состоянием, которые также выделены. Этот метод используется для генерации Icon для компонентов, которые находятся в состояниях отключенного и выделенного, но не имеют конкретного Icon для этого состояния. Например, если вы создаете JButton и задаете только Icon через setIcon, этот метод будет вызван для генерации отключенной и выделенной Icon. Если в качестве icon передается null, этот метод возвращает null. Некоторые стили отображения могут не отображать отключенную и выделенную иконку, в этом случае они проигнорируют этот метод.
- Переопределяет:
-
getDisabledSelectedIconв классеLookAndFeel - Параметры:
-
component- JComponent, на котором будет отображаться иконка, может быть null -
icon- Иконка для генерации отключенной и выделенной иконки. - Возвращает:
- Отключенная и выделенная иконка, или null, если подходящая иконка не может быть сгенерирована.
- С:
- 1.5
getControlTextFont
public static FontUIResource getControlTextFont()
getCurrentTheme().getControlTextColor().- Возвращает:
- шрифт для текста управления
- См. также:
getSystemTextFont
public static FontUIResource getSystemTextFont()
getCurrentTheme().getSystemTextFont().- Возвращает:
- шрифт системного текста
- См. также:
getUserTextFont
public static FontUIResource getUserTextFont()
getCurrentTheme().getUserTextFont().- Возвращает:
- шрифт текста пользователя
- См. также:
getMenuTextFont
public static FontUIResource getMenuTextFont()
getCurrentTheme().getMenuTextFont().- Возвращает:
- шрифт текста меню
- См. также:
getWindowTitleFont
public static FontUIResource getWindowTitleFont()
getCurrentTheme().getWindowTitleFont().- Возвращает:
- шрифт заголовка окна
- См. также:
getSubTextFont
public static FontUIResource getSubTextFont()
getCurrentTheme().getSubTextFont().- Возвращает:
- шрифт подзаголовка
- См. также:
getDesktopColor
public static ColorUIResource getDesktopColor()
getCurrentTheme().getDesktopColor().- Возвращает:
- цвет рабочего стола
- См. также:
getFocusColor
public static ColorUIResource getFocusColor()
getCurrentTheme().getFocusColor().- Возвращает:
- цвет фокуса
- См. также:
getWhite
public static ColorUIResource getWhite()
getCurrentTheme().getWhite().- Возвращает:
- белый цвет
- См. также:
getBlack
public static ColorUIResource getBlack()
getCurrentTheme().getBlack().- Возвращает:
- черный цвет
- См. также:
getControl
public static ColorUIResource getControl()
getCurrentTheme().getControl().- Возвращает:
- цвет элемента управления
- См. также:
getControlShadow
public static ColorUIResource getControlShadow()
getCurrentTheme().getControlShadow().- Возвращает:
- цвет тени элемента управления
- См. также:
getControlDarkShadow
public static ColorUIResource getControlDarkShadow()
getCurrentTheme().getControlDarkShadow().- Возвращает:
- цвет тёмной тени элемента управления
- См. также:
getControlInfo
public static ColorUIResource getControlInfo()
getCurrentTheme().getControlInfo().- Возвращает:
- цвет информации элемента управления
- См. также:
getControlHighlight
public static ColorUIResource getControlHighlight()
getCurrentTheme().getControlHighlight().- Возвращает:
- цвет выделения элемента управления
- См. также:
getControlDisabled
public static ColorUIResource getControlDisabled()
getCurrentTheme().getControlDisabled().- Возвращает:
- цвет отключенного элемента управления
- См. также:
getPrimaryControl
public static ColorUIResource getPrimaryControl()
getCurrentTheme().getPrimaryControl().- Возвращает:
- основной цвет элемента управления
- См. также:
getPrimaryControlShadow
public static ColorUIResource getPrimaryControlShadow()
getCurrentTheme().getPrimaryControlShadow().- Возвращает:
- цвет тени основного элемента управления
- См. также:
getPrimaryControlDarkShadow
public static ColorUIResource getPrimaryControlDarkShadow()
getCurrentTheme().getPrimaryControlDarkShadow().- Возвращает:
- цвет тёмной тени основной области управления
- См. также:
getPrimaryControlInfo
public static ColorUIResource getPrimaryControlInfo()
getCurrentTheme().getPrimaryControlInfo().- Возвращает:
- цвет информации основной области управления
- См. также:
getPrimaryControlHighlight
public static ColorUIResource getPrimaryControlHighlight()
getCurrentTheme().getPrimaryControlHighlight().- Возвращает:
- цвет выделения основной области управления
- См. также:
getSystemTextColor
public static ColorUIResource getSystemTextColor()
getCurrentTheme().getSystemTextColor().- Возвращает:
- цвет системного текста
- См. также:
getControlTextColor
public static ColorUIResource getControlTextColor()
getCurrentTheme().getControlTextColor().- Возвращает:
- цвет текста области управления
- См. также:
getInactiveControlTextColor
public static ColorUIResource getInactiveControlTextColor()
getCurrentTheme().getInactiveControlTextColor().- Возвращает:
- цвет текста неактивной области управления
- См. также:
getInactiveSystemTextColor
public static ColorUIResource getInactiveSystemTextColor()
getCurrentTheme().getInactiveSystemTextColor().- Возвращает:
- цвет неактивного системного текста
- См. также:
getUserTextColor
public static ColorUIResource getUserTextColor()
getCurrentTheme().getUserTextColor().- Возвращает:
- цвет текста пользователя
- См. также:
getTextHighlightColor
public static ColorUIResource getTextHighlightColor()
getCurrentTheme().getTextHighlightColor().- Возвращает:
- цвет выделения текста
- См. также:
getHighlightedTextColor
public static ColorUIResource getHighlightedTextColor()
getCurrentTheme().getHighlightedTextColor().- Возвращает:
- цвет выделенного текста
- См. также:
getWindowBackground
public static ColorUIResource getWindowBackground()
getCurrentTheme().getWindowBackground().- Возвращает:
- цвет фона окна
- См. также:
getWindowTitleBackground
public static ColorUIResource getWindowTitleBackground()
getCurrentTheme().getWindowTitleBackground().- Возвращает:
- цвет фона заголовка окна
- См. также:
getWindowTitleForeground
public static ColorUIResource getWindowTitleForeground()
getCurrentTheme().getWindowTitleForeground().- Возвращает:
- цвет текста заголовка окна
- См. также:
getWindowTitleInactiveBackground
public static ColorUIResource getWindowTitleInactiveBackground()
getCurrentTheme().getWindowTitleInactiveBackground().- Возвращает:
- цвет фона неактивного заголовка окна
- См. также:
getWindowTitleInactiveForeground
public static ColorUIResource getWindowTitleInactiveForeground()
getCurrentTheme().getWindowTitleInactiveForeground().- Возвращает:
- цвет текста неактивного заголовка окна
- См. также:
getMenuBackground
public static ColorUIResource getMenuBackground()
getCurrentTheme().getMenuBackground().- Возвращает:
- цвет фона меню
- См. также:
getMenuForeground
public static ColorUIResource getMenuForeground()
getCurrentTheme().getMenuForeground().- Возвращает:
- цвет текста меню
- См. также:
getMenuSelectedBackground
public static ColorUIResource getMenuSelectedBackground()
getCurrentTheme().getMenuSelectedBackground().- Возвращает:
- цвет фона выделенного пункта меню
- См. также:
getMenuSelectedForeground
public static ColorUIResource getMenuSelectedForeground()
getCurrentTheme().getMenuSelectedForeground().- Возвращает:
- цвет текста выделенного пункта меню
- См. также:
getMenuDisabledForeground
public static ColorUIResource getMenuDisabledForeground()
getCurrentTheme().getMenuDisabledForeground().- Возвращает:
- цвет текста неактивного пункта меню
- См. также:
getSeparatorBackground
public static ColorUIResource getSeparatorBackground()
getCurrentTheme().getSeparatorBackground().- Возвращает:
- цвет фона разделителя
- См. также:
getSeparatorForeground
public static ColorUIResource getSeparatorForeground()
getCurrentTheme().getSeparatorForeground().- Возвращает:
- цвет текста разделителя
- См. также:
getAcceleratorForeground
public static ColorUIResource getAcceleratorForeground()
getCurrentTheme().getAcceleratorForeground().- Возвращает:
- цвет текста значка быстрого вызова
- См. также:
getAcceleratorSelectedForeground
public static ColorUIResource getAcceleratorSelectedForeground()
getCurrentTheme().getAcceleratorSelectedForeground().- Возвращает:
- цвет выделенного ускорителя
- См. также:
getLayoutStyle
public LayoutStyle getLayoutStyle()
LayoutStyle, реализующий рекомендации по дизайну Java look and feel.- Переопределяет:
-
getLayoutStyleв классеLookAndFeel - Возвращает:
- LayoutStyle, реализующий рекомендации по дизайну Java look and feel
- С:
- 1.6
- См. также:
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/swing/plaf/metal/MetalLookAndFeel.html