Класс 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.InheritDefaults" имело какой-либо эффект, необходимо указать "Nimbus.Overrides". "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- Insets для размещения возвращаемого значения. - Возвращает:
- Отступы размеров.
getColorForState
protected Color getColorForState(SynthContext ctx, ColorType type)
JComponent. Переопределено, чтобы этот стиль заполнял себя данными из UIDefaults, если это необходимо.
В дополнение, NimbusStyle обрабатывает ColorType немного иначе, чем 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 для этого стиля, который в конечном итоге делегирует Painters, установленные в этом стиле.- 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. - Возвращает:
- Рисовальщик фона, связанный для данного состояния, или null, если не был найден.
getForegroundPainter
public Painter<Object> getForegroundPainter(SynthContext ctx)
- Параметры:
-
ctx- SynthContext. Не должен быть null. - Возвращает:
- Рисовальщик переднего плана, связанный для данного состояния, или null, если не был найден.
getBorderPainter
public Painter<Object> getBorderPainter(SynthContext ctx)
- Параметры:
-
ctx- SynthContext. Не должен быть null. - Возвращает:
- Рисовальщик рамки, связанный для данного состояния, или null, если не был найден.
© 1993, 2023, 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/21/docs/api/java.desktop/javax/swing/plaf/nimbus/NimbusStyle.html