Spec-Zone.ru › OpenJDK 24

Класс NimbusStyle

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

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

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

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

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

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

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

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

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

Методы, объявленные в классе javax.swing.plaf.synth.SynthStyle

getBoolean, getColor, getFont, getGraphicsUtils, getIcon, getInt, getString, uninstallDefaults

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

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

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

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)
Устанавливает необходимые состояния из этого стиля на JComponent из context. Переопределено для того, чтобы этот стиль заполнял себя данными из UIDefaults, если необходимо.
Overrides:
installDefaults в классе SynthStyle
Параметры:
ctx - SynthContext, определяющий компонент для установки свойств.

getInsets

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

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".
Specified by:
getColorForState в классе SynthStyle
Параметры:
ctx - SynthContext, определяющий запросчика
type - Тип запрашиваемого цвета.
Возвращает:
Цвет для рендеринга

getFontForState

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

getPainter

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

isOpaque

public boolean isOpaque(SynthContext ctx)
Возвращает true, если область непрозрачна. Переопределено для того, чтобы этот стиль заполнял себя данными из UIDefaults, если необходимо. Если непрозрачность не указана в UI-дефолтах, по умолчанию она непрозрачна.
Overrides:
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".

Overrides:
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, если он не был найден.
END_OF_DOCUMENT_MARKER

© 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/plaf/nimbus/NimbusStyle.html

Spec-Zone.ru

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