Класс 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 |
Получение регионального свойства стиля. |
Painter |
getBackgroundPainter |
Получает соответствующего рисовальщика фона, если таковой имеется, для состояния, указанного в данном SynthContext. |
Painter |
getBorderPainter |
Получает соответствующего рисовальщика рамки, если таковой имеется, для состояния, указанного в данном SynthContext. |
protected Color |
getColorForState |
Возвращает цвет для указанного состояния. |
protected Font |
getFontForState |
Возвращает шрифт для указанного состояния. |
Painter |
getForegroundPainter |
Получает соответствующего рисовальщика переднего плана, если таковой имеется, для состояния, указанного в данном SynthContext. |
Insets |
getInsets |
Возвращает отступы, используемые для расчёта размеров. |
SynthPainter |
getPainter |
Возвращает SynthPainter, который будет использоваться для рисования. |
void |
installDefaults |
Устанавливает необходимое состояние из этого стиля на JComponent из context. |
boolean |
isOpaque |
Возвращает true, если регион непрозрачен. |
Методы, объявленные в классе javax.swing.plaf.synth.SynthStyle
getBoolean, getColor, getFont, getGraphicsUtils, getIcon, getInt, getString, uninstallDefaults
Подробное описание полей
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)
- 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)
- 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)
- Параметры:
-
ctx- SynthContext. Не должно быть null. - Возвращает:
- Painter фона, связанный с данным состоянием, или null, если он не был найден.
getForegroundPainter
public Painter<Object> getForegroundPainter(SynthContext ctx)
- Параметры:
-
ctx- SynthContext. Не должно быть null. - Возвращает:
- Painter переднего плана, связанный с данным состоянием, или null, если он не был найден.
getBorderPainter
public Painter<Object> getBorderPainter(SynthContext ctx)
- Параметры:
-
ctx- SynthContext. Не должно быть null. - Возвращает:
- Painter рамки, связанный с данным состоянием, или null, если он не был найден.
© 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