Класс 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». Если оно равно true, это свойство клиента указывает, что сначала должны быть прочитаны настройки по умолчанию, расположенные в UIManager, а затем они должны быть заменены настройками по умолчанию, расположенными в свойствах клиента компонента. Если false, то будут использоваться только настройки по умолчанию, расположенные в карте свойств клиента компонента. Если не указано, предполагается, что оно равно true.
Вы должны указать «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<Object> |
getBackgroundPainter |
Возвращает соответствующий рисовальщик фона, если он есть, для состояния, указанного в данном SynthContext. |
Painter<Object> |
getBorderPainter |
Возвращает соответствующий рисовальщик границы, если он есть, для состояния, указанного в данном SynthContext. |
protected Color |
getColorForState |
Возвращает цвет для указанного состояния. |
protected Font |
getFontForState |
Возвращает шрифт для указанного состояния. |
Painter<Object> |
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, если необходимо.- Переопределяет:
-
installDefaultsв классеSynthStyle - Параметры:
-
ctx- SynthContext, определяющий компонент для установки свойств.
getInsets
public Insets getInsets(SynthContext ctx, Insets in)
- Переопределяет:
-
getInsetsв классеSynthStyle - Параметры:
-
ctx- SynthContext, определяющий запрос -
in- Insets для возвращаемого значения. - Возвращает:
- Отступы для размеров.
getColorForState
protected Color getColorForState(SynthContext ctx, ColorType type)
JComponent. Переопределено для заполнения стиля данными из UIDefaults, если необходимо.
NimbusStyle обрабатывает типы цветов немного иначе, чем 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, если необходимо. Если значение с именем "font" не найдено в UIDefaults, возвращается шрифт "defaultFont" из UIDefaults.- Указано в:
-
getFontForStateв классеSynthStyle - Параметры:
-
ctx- SynthContext, определяющий запрос - Возвращает:
- Шрифт для отрисовки
getPainter
public SynthPainter getPainter(SynthContext ctx)
SynthPainter, который будет использоваться для отрисовки. Может вернуть null. Возвращает SynthPainter для данного стиля, делегирующий отрисовку установленным в этом стиле рисовальщикам.- Переопределяет:
-
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. - Возвращает:
- Рисовальщик фона, соответствующий данному состоянию, или null, если не найдено.
getForegroundPainter
public Painter<Object> getForegroundPainter(SynthContext ctx)
- Параметры:
-
ctx- SynthContext. Не должно быть null. - Возвращает:
- Рисовальщик переднего плана, соответствующий данному состоянию, или null, если не найдено.
getBorderPainter
public Painter<Object> getBorderPainter(SynthContext ctx)
- Параметры:
-
ctx- SynthContext. Не должно быть null. - Возвращает:
- Рисовальщик границы, соответствующий данному состоянию, или null, если не найдено.
© 1993, 2021, 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/17/docs/api/java.desktop/javax/swing/plaf/nimbus/NimbusStyle.html