Класс 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 |
Получение свойства стиля, относящегося к определённой области. |
Painter |
getBackgroundPainter |
Возвращает соответствующий объект Painter фона, если он существует, для состояния, указанного в переданном SynthContext. |
Painter |
getBorderPainter |
Возвращает соответствующий объект Painter границы, если он существует, для состояния, указанного в переданном SynthContext. |
protected Color |
getColorForState |
Возвращает цвет для указанного состояния. |
protected Font |
getFontForState |
Возвращает шрифт для указанного состояния. |
Painter |
getForegroundPainter |
Возвращает соответствующий объект Painter переднего плана, если он существует, для состояния, указанного в переданном SynthContext. |
Insets |
getInsets |
Возвращает Insets, используемые для расчёта размеров. |
SynthPainter |
getPainter |
Возвращает SynthPainter, который будет использоваться для рисования. |
void |
installDefaults |
Устанавливает необходимое состояние этого Style для JComponent из context. |
boolean |
isOpaque |
Возвращает true, если область непрозрачна. |
Методы, объявленные в классе 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.- Переопределяет:
-
installDefaultsв классеSynthStyle - Параметры:
-
ctx— SynthContext, идентифицирующий компонент, для которого устанавливаются свойства.
getInsets
public Insets getInsets(SynthContext ctx, Insets in)
- Переопределяет:
-
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)
- Переопределяет:
-
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)
- Параметры:
-
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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/plaf/nimbus/NimbusStyle.html