Spec-Zone.ru › OpenJDK 27

Класс NimbusStyle

java.lang.Object
javax.swing.plaf.synth.SynthStyle
javax.swing.plaf.nimbus.NimbusStyle
public final class NimbusStyle extends SynthStyle

Реализация SynthStyle, используемая Nimbus. Для каждой области Region, зарегистрированной в NimbusLookAndFeel, будет создан соответствующий NimbusStyle. Поэтому сторонние компоненты, зарегистрированные в NimbusLookAndFeel, получат NimbusStyle от данного оформления через метод #getStyle(JComponent, Region).

Этот класс корректно считывает и извлекает значения из UIDefaults в соответствии со стандартными соглашениями об именовании Nimbus. Он создает и извлекает хранящиеся там объекты Painter, шрифты, цвета и другие данные.

NimbusStyle также поддерживает возможность переопределения настроек для отдельных компонентов. NimbusStyle проверяет карту клиентских свойств компонента на наличие "Nimbus.Overrides". Если значение, связанное с этим ключом, является экземпляром UIDefaults, значения из этой таблицы настроек переопределяют стандартные настройки Nimbus в UIManager, но только для данного экземпляра компонента.

При необходимости можно задать клиентское свойство "Nimbus.Overrides.InheritDefaults". Если оно имеет значение true, это клиентское свойство указывает, что сначала следует прочитать настройки из UIManager, а затем заменить их настройками из клиентских свойств компонента. Если значение равно false, будут использоваться только настройки из карты клиентских свойств компонента. Если свойство не задано, предполагается значение true.

Чтобы "Nimbus.Overrides.InheritDefaults" имело какой-либо эффект, необходимо задать "Nimbus.Overrides". "Nimbus.Overrides" указывает, имеются ли переопределения, а "Nimbus.Overrides.InheritDefaults" — следует ли сначала инициализировать эти переопределения настройками из UIManager.

NimbusStyle перезагружается при возникновении события изменения свойства компонента для "Nimbus.Overrides" или "Nimbus.Overrides.InheritDefaults". Например, установка нового UIDefaults для компонента приведет к перезагрузке стиля.

Значения считываются из UIManager только один раз, после чего кэшируются. Если необходимо повторно прочитать значения (например, при перезагрузке пользовательского интерфейса), следует отбросить этот NimbusStyle и получить новый из NimbusLookAndFeel с помощью NimbusLookAndFeel.getStyle.

Основной интерес для авторов сторонних компонентов в этом классе представляют три метода, возвращающие объекты Painter: #getBackgroundPainter, #getForegroundPainter и #getBorderPainter.

NimbusStyle позволяет задавать пользовательские состояния или изменять порядок состояний. В Synth (а значит, и в Nimbus) используется понятие «состояние». Например, JButton может находиться в состоянии "MOUSE_OVER", "ENABLED" или "DISABLED". Это стандартные состояния, определенные в Synth и применимые ко всем областям Synth.

Однако иногда необходимо пользовательское состояние. Например, можно задать для JButton отличающийся способ отрисовки, если его родительский компонент — JToolbar. В Nimbus такие пользовательские состояния задаются специальным ключом в UIDefaults. Следующие записи UIDefaults определяют для этой кнопки три состояния:

    JButton.States = Enabled, Disabled, Toolbar
    JButton[Enabled].backgroundPainter = somePainter
    JButton[Disabled].background = BLUE
    JButton[Toolbar].backgroundPainter = someOtherPaint

Как видно, запись JButton.States перечисляет состояния, поддерживаемые стилем JButton. Затем задаются настройки для каждого состояния. Если запись JButton.States не указана, будут использоваться стандартные состояния Synth. Если запись указана, но список состояний пуст или равен null, будут использоваться стандартные состояния Synth.

Краткое описание полей

Модификатор и тип Поле Описание
static final String LARGE_KEY
Большой ключ
static final double LARGE_SCALE
Большой масштаб
static final String MINI_KEY
Миниатюрный ключ
static final double MINI_SCALE
Миниатюрный масштаб
static final String SMALL_KEY
Малый ключ
static final double SMALL_SCALE
Малый масштаб

Краткое описание методов

Модификатор и тип Метод Описание
Object get(SynthContext ctx, Object key)
Получение свойства стиля, специфичного для области.
Painter<Object> getBackgroundPainter(SynthContext ctx)
Возвращает соответствующий фоновый Painter, если он есть, для состояния, указанного в переданном SynthContext.
Painter<Object> getBorderPainter(SynthContext ctx)
Возвращает соответствующий Painter границы, если он есть, для состояния, указанного в переданном SynthContext.
protected Color getColorForState(SynthContext ctx, ColorType type)
Возвращает цвет для указанного состояния.
protected Font getFontForState(SynthContext ctx)
Возвращает шрифт для указанного состояния.
Painter<Object> getForegroundPainter(SynthContext ctx)
Возвращает соответствующий Painter переднего плана, если он есть, для состояния, указанного в переданном SynthContext.
Insets getInsets(SynthContext ctx, Insets in)
Возвращает Insets, используемые для вычисления размеров.
SynthPainter getPainter(SynthContext ctx)
Возвращает SynthPainter, который будет использоваться для отрисовки.
void installDefaults(SynthContext ctx)
Устанавливает необходимое состояние из этого Style для JComponent из context.
boolean isOpaque(SynthContext ctx)
Возвращает true, если область непрозрачна.

Методы, объявленные в классе SynthStyle

getBoolean, getColor, getFont, getGraphicsUtils, getIcon, getInt, getString, uninstallDefaults
Модификатор и тип Метод Описание
boolean getBoolean(SynthContext context, Object key, boolean defaultValue)
Вспомогательный метод для получения конкретного свойства стиля, значение которого имеет тип Boolean.
Color getColor(SynthContext context, ColorType type)
Возвращает цвет для указанного состояния.
Font getFont(SynthContext context)
Возвращает Font для указанного состояния.
SynthGraphicsUtils getGraphicsUtils(SynthContext context)
Возвращает SynthGraphicUtils для указанного контекста.
Icon getIcon(SynthContext context, Object key)
Вспомогательный метод для получения конкретного свойства стиля, значение которого имеет тип Icon.
int getInt(SynthContext context, Object key, int defaultValue)
Вспомогательный метод для получения конкретного свойства стиля, значение которого имеет тип Number.
String getString(SynthContext context, Object key, String defaultValue)
Вспомогательный метод для получения конкретного свойства стиля, значение которого имеет тип String.
void uninstallDefaults(SynthContext context)
Удаляет все состояния, установленные этим стилем для JComponent из context.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарело и будет удалено: этот элемент API может быть удален в будущей версии.
Финализация устарела и может быть удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода для этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени.

Подробное описание полей

LARGE_KEY

public static final String LARGE_KEY
Большой ключ
См. также:
  • Значения констант полей

SMALL_KEY

public static final String SMALL_KEY
Малый ключ
См. также:
  • Значения констант полей

MINI_KEY

public static final String MINI_KEY
Миниатюрный ключ
См. также:
  • Значения констант полей

LARGE_SCALE

public static final double LARGE_SCALE
Большой масштаб
См. также:
  • Значения констант полей

SMALL_SCALE

public static final double SMALL_SCALE
Малый масштаб
См. также:
  • Значения констант полей

MINI_SCALE

public static final double MINI_SCALE
Миниатюрный масштаб
См. также:
  • Значения констант полей

Подробное описание методов

installDefaults

public void installDefaults(SynthContext ctx)
Устанавливает необходимое состояние из этого Style для JComponent из context. Переопределен, чтобы при необходимости заполнять этот стиль данными из UIDefaults.
Переопределяет:
installDefaults в классе SynthStyle
Параметры:
ctx — SynthContext, определяющий компонент, для которого устанавливаются свойства.

getInsets

public Insets getInsets(SynthContext ctx, Insets in)
Возвращает Insets, используемые для вычисления размеров. Переопределен, чтобы при необходимости заполнять этот стиль данными из UIDefaults.
Переопределяет:
getInsets в классе SynthStyle
Параметры:
ctx — SynthContext, определяющий запросивший компонент
in — Insets, в который помещается возвращаемое значение.
Возвращает:
Insets для размеров.

getColorForState

protected Color getColorForState(SynthContext ctx, ColorType type)
Возвращает цвет для указанного состояния. Этот метод НЕ должен вызывать методы у JComponent.

Переопределен, чтобы при необходимости заполнять этот стиль данными из UIDefaults.

Кроме того, NimbusStyle обрабатывает ColorTypes немного иначе, чем Synth.

  • ColorType.BACKGROUND соответствует цвету, хранящемуся в UIDefaults под именем "background".
  • ColorType.TEXT_BACKGROUND соответствует цвету, хранящемуся в UIDefaults под именем "textBackground".
  • ColorType.FOREGROUND соответствует цвету, хранящемуся в UIDefaults под именем "textForeground".
  • ColorType.TEXT_FOREGROUND соответствует цвету, хранящемуся в UIDefaults под именем "textForeground".
Определен в:
getColorForState в классе SynthStyle
Параметры:
ctx — SynthContext, определяющий запросивший компонент
type — тип запрашиваемого цвета.
Возвращает:
Цвет для отрисовки

getFontForState

protected Font getFontForState(SynthContext ctx)
Возвращает шрифт для указанного состояния. Этот метод НЕ должен вызывать методы у JComponent. Переопределен, чтобы при необходимости заполнять этот стиль данными из UIDefaults. Если в UIDefaults не найдено значение с именем "font", вместо него будет возвращен шрифт "defaultFont" из UIDefaults.
Определен в:
getFontForState в классе SynthStyle
Параметры:
ctx — SynthContext, определяющий запросивший компонент
Возвращает:
Шрифт для отрисовки

getPainter

public SynthPainter getPainter(SynthContext ctx)
Возвращает SynthPainter, который будет использоваться для отрисовки. Может вернуть null. Возвращает SynthPainter для этого стиля, который делегирует вызовы объектам Painter, установленным в этом стиле.
Переопределяет:
getPainter в классе SynthStyle
Параметры:
ctx — SynthContext, определяющий запросивший компонент
Возвращает:
SynthPainter для использования

isOpaque

public boolean isOpaque(SynthContext ctx)
Возвращает true, если область непрозрачна. Переопределен, чтобы при необходимости заполнять этот стиль данными из UIDefaults. Если непрозрачность не указана в настройках пользовательского интерфейса, по умолчанию область считается непрозрачной.
Переопределяет:
isOpaque в классе SynthStyle
Параметры:
ctx — SynthContext, определяющий запросивший компонент
Возвращает:
true, если область непрозрачна.

get

public Object get(SynthContext ctx, Object key)
Получение свойства стиля, специфичного для области.

Переопределен, чтобы при необходимости заполнять этот стиль данными из UIDefaults.

Свойства в UIDefaults могут быть заданы цепочкой. Например:

background
Button.opacity
Button.Enabled.foreground
Button.Enabled+Selected.background

В этом примере предположим, что вы находитесь в состоянии Enabled+Selected и ищете "foreground". Сначала проверяется Button.Enabled+Selected.foreground, но такого цвета нет. Затем выполняется поиск в следующем подходящем состоянии — в данном случае Button.Enabled.foreground, где значение найдено. Поэтому возвращается оно.

Если же мы находимся в состоянии Enabled и ищем "background", значение не будет найдено ни в Button.Enabled, ни в Button, но будет найдено на верхнем уровне в UIManager. Поэтому возвращается это значение.

Особое примечание: переданный этому методу "key" может иметь вид "background" или "Button.background", где "Button" соответствует префиксу, переданному конструктору NimbusStyle. В обоих случаях выполняется поиск "background".

Переопределяет:
get в классе SynthStyle
Параметры:
ctx — SynthContext, определяющий запросивший компонент
key — не должен быть равен null
Возвращает:
Значение указанного свойства

getBackgroundPainter

public Painter<Object> getBackgroundPainter(SynthContext ctx)
Возвращает соответствующий фоновый Painter, если он есть, для состояния, указанного в переданном SynthContext. Этот метод выполняет подходящий поиск с возвратом к альтернативным вариантам, как описано в #get.
Параметры:
ctx — SynthContext. Не должен быть равен null.
Возвращает:
Фоновый Painter, связанный с указанным состоянием, или null, если его не удалось найти.

getForegroundPainter

public Painter<Object> getForegroundPainter(SynthContext ctx)
Возвращает соответствующий Painter переднего плана, если он есть, для состояния, указанного в переданном SynthContext. Этот метод выполняет подходящий поиск с возвратом к альтернативным вариантам, как описано в #get.
Параметры:
ctx — SynthContext. Не должен быть равен null.
Возвращает:
Painter переднего плана, связанный с указанным состоянием, или null, если его не удалось найти.

getBorderPainter

public Painter<Object> getBorderPainter(SynthContext ctx)
Возвращает соответствующий Painter границы, если он есть, для состояния, указанного в переданном SynthContext. Этот метод выполняет подходящий поиск с возвратом к альтернативным вариантам, как описано в #get.
Параметры:
ctx — SynthContext. Не должен быть равен null.
Возвращает:
Painter границы, связанный с указанным состоянием, или null, если его не удалось найти.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, способы обхода проблем и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API