Spec-Zone.ru › OpenJDK 21

Класс 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". Если оно равно 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(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 - 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)
Возвращает 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.
Возвращает:
Рисовальщик фона, связанный для данного состояния, или null, если не был найден.

getForegroundPainter

public Painter<Object> getForegroundPainter(SynthContext ctx)
Получает соответствующий Painter переднего плана, если он есть, для состояния, указанного в данном SynthContext. Этот метод выполняет соответствующий поиск по умолчанию, как описано в #get.
Параметры:
ctx - SynthContext. Не должен быть null.
Возвращает:
Рисовальщик переднего плана, связанный для данного состояния, или null, если не был найден.

getBorderPainter

public Painter<Object> getBorderPainter(SynthContext ctx)
Получает соответствующий Painter рамки, если он есть, для состояния, указанного в данном SynthContext. Этот метод выполняет соответствующий поиск по умолчанию, как описано в #get.
Параметры:
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

Spec-Zone.ru

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