Spec-Zone.ru › OpenJDK 25

Класс 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
Ключ Large
static final double LARGE_SCALE
Масштаб Large
static final String MINI_KEY
Ключ Mini
static final double MINI_SCALE
Масштаб Mini
static final String SMALL_KEY
Ключ Small
static final double SMALL_SCALE
Масштаб Small

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

Модификатор и тип Метод Описание
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

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

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

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

LARGE_KEY

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

SMALL_KEY

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

MINI_KEY

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

LARGE_SCALE

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

SMALL_SCALE

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

MINI_SCALE

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

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

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. Если непрозрачность не указана в настройках UI, по умолчанию область считается непрозрачной.
Переопределяет:
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. Поэтому мы вернём это значение.

Особое примечание: ключ, переданный этому методу, может иметь вид "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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/plaf/nimbus/NimbusStyle.html

Spec-Zone.ru

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