Класс 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. Если вы укажете запись, но список состояний будет пустым или нулевым, то будут предполагаться стандартные состояния synth.

Краткое описание полей

Модификатор и тип Поле Описание
static String LARGE_KEY

Большой ключ

static double LARGE_SCALE

Большая шкала

static String MINI_KEY

Маленький ключ

static double MINI_SCALE

Маленькая шкала

static String SMALL_KEY

Средний ключ

static 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 - Отступы для размещения возвращаемого значения.
Возвращает:
Отступы размеров.

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".
Определено в:
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 для этого стиля, который делегирует работу установленным в этом стиле 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.
Возвращает:
Painter фона, связанный с данным состоянием, или null, если не был найден.

getForegroundPainter

public Painter<Object> getForegroundPainter(SynthContext ctx)

Получает соответствующий Painter переднего плана, если он есть, для состояния, указанного в данном SynthContext. Этот метод выполняет соответствующий поиск по умолчанию, как описано в #get.

Параметры:
ctx - SynthContext. Не должно быть null.
Возвращает:
Painter переднего плана, связанный с данным состоянием, или null, если не был найден.

getBorderPainter

public Painter<Object> getBorderPainter(SynthContext ctx)

Получает соответствующий Painter рамки, если он есть, для состояния, указанного в данном SynthContext. Этот метод выполняет соответствующий поиск по умолчанию, как описано в #get.

Параметры:
ctx - SynthContext. Не должно быть null.
Возвращает:
Painter рамки, связанный с данным состоянием, или null, если не был найден.

© 1993, 2020, 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/11/docs/api/java.desktop/javax/swing/plaf/nimbus/NimbusStyle.html

Spec-Zone .ru
спецификации, руководства, описания, API