Spec-Zone.ru › OpenJDK 21

Класс LookAndFeel

java.lang.Object
javax.swing.LookAndFeel
Прямые известные подклассы:
BasicLookAndFeel, MultiLookAndFeel
public abstract class LookAndFeel extends Object
LookAndFeel, как следует из названия, инкапсулирует внешний вид. Помимо установки внешнего вида, большинству разработчиков не нужно взаимодействовать напрямую с LookAndFeel. Как правило, только разработчики, создающие собственный внешний вид, должны беспокоиться об этом классе.

Swing построен на основе принципа, что каждый подкласс JComponent имеет реализацию определенного подкласса ComponentUI. Подкласс ComponentUI часто упоминается как «ui», «компонентный ui» или «делегат внешнего вида». Подкласс ComponentUI отвечает за предоставление функциональности, специфичной для внешнего вида компонента. Например, JTree требует реализации подкласса ComponentUI TreeUI. Реализация конкретного подкласса ComponentUI предоставляется LookAndFeel. Каждый подкласс JComponent определяет подкласс ComponentUI, который он требует, с помощью метода JComponent getUIClassID.

Каждая реализация LookAndFeel должна предоставить реализацию соответствующего подкласса ComponentUI, указав значение для каждого идентификатора класса ui Swing в объекте UIDefaults , возвращаемом методом getDefaults. Например, BasicLookAndFeel использует BasicTreeUI в качестве конкретной реализации для TreeUI. Это достигается путем предоставления пары ключ-значение "TreeUI"-"javax.swing.plaf.basic.BasicTreeUI" в объекте UIDefaults , возвращаемом методом getDefaults. Подробную информацию о том, как получить реализацию подкласса ComponentUI , см. в UIDefaults.getUI(JComponent) .

При установке LookAndFeel UIManager не проверяет, существует ли запись для всех идентификаторов класса ui. Вследствие этого, могут возникнуть случайные исключения, если текущий внешний вид не предоставил значение для определенного идентификатора класса ui, и создается экземпляр подкласса JComponent .

Рекомендации по внешнему виду

Как отмечается в UIManager, каждый LookAndFeel имеет возможность предоставить набор значений по умолчанию, которые накладываются на значения по умолчанию разработчика и системы. Некоторые компоненты Swing требуют, чтобы внешний вид предоставил определенный набор значений по умолчанию. Эти значения документированы в классах, которые их требуют.

ComponentUIs и значения по умолчанию

Все ComponentUIs обычно должны устанавливать различные свойства на JComponent, для которого ComponentUI предоставляет внешний вид. Это обычно происходит при установке ComponentUI на JComponent. Свойство должно устанавливаться только в том случае, если разработчик не установил его. Для значений, отличных от примитивных, рекомендуется, чтобы ComponentUI изменял свойство на JComponent только в том случае, если текущее значение равно null или реализует UIResource. Если текущее значение равно null или реализует UIResource, это означает, что свойство не было установлено разработчиком, и ui может его изменить. Например, BasicButtonUI.installDefaults изменяет шрифт на JButton только в том случае, если возвращаемое значение от button.getFont() равно null или реализует UIResource. С другой стороны, если button.getFont() возвратил значение non-null, которое не реализовывало UIResource, тогда BasicButtonUI.installDefaults не изменял шрифт JButton.

Для примитивных значений, таких как opaque, должен вызываться метод installProperty . installProperty изменяет соответствующее свойство только в том случае, если значение не было изменено разработчиком.

Реализации ComponentUI должны использовать различные методы установки, предоставляемые этим классом, поскольку они обрабатывают необходимую проверку и устанавливают свойство в соответствии с рекомендуемыми принципами.

Исключения

Все методы установки, предоставляемые LookAndFeel, должны обращаться к значениям по умолчанию, если значение изменяемого свойства равно null или UIResource. Например, установка шрифта выполняет следующее:
   JComponent c;
   Font font = c.getFont();
   if (font == null || (font instanceof UIResource)) {
       c.setFont(UIManager.getFont("fontKey"));
   }
 
Если шрифт является null или UIResource, в таблицу значений по умолчанию обращаются с ключом fontKey. Все методы UIDefault's с суффиксом «get» выбрасывают исключение NullPointerException если передан null. Таким образом, за исключением случаев, когда оговорено обратное, каждый из различных методов установки LookAndFeel выбрасывает исключение NullPointerException , если текущее значение равно null или UIResource, а переданный ключ значений по умолчанию равен null. Кроме того, если не указано иное, все методы install выбрасывают исключение NullPointerException если передан компонент null.
С:
1.2

Краткое описание конструкторов

LookAndFeel()
Модификатор Конструктор Описание
protected
Конструктор для вызова подклассами.

Краткое описание методов

Модификатор и тип Метод Описание
UIDefaults getDefaults()
Возвращает значения по умолчанию для внешнего вида.
abstract String getDescription()
Возвращает описание реализации внешнего вида в одну строку, например:
static Object getDesktopPropertyValue(String systemPropertyName, Object fallbackValue)
Возвращает значение указанной системной свойства рабочего стола, вызывая Toolkit.getDefaultToolkit().getDesktopProperty().
Icon getDisabledIcon(JComponent component, Icon icon)
Возвращает Icon с отключенным внешним видом.
Icon getDisabledSelectedIcon(JComponent component, Icon icon)
Возвращает Icon для использования отключенными компонентами, которые также выбраны.
abstract String getID()
Возвращает строку, идентифицирующую этот внешний вид.
LayoutStyle getLayoutStyle()
Возвращает LayoutStyle для этого внешнего вида.
abstract String getName()
Возвращает короткую строку, идентифицирующую этот внешний вид, например:
boolean getSupportsWindowDecorations()
Возвращает true, если возвращенные LookAndFeel экземпляры поддерживают предоставление декораций Window в JRootPane.
void initialize()
Инициализирует внешний вид.
static void installBorder(JComponent c, String defaultBorderName)
Метод для удобства установки свойства границы компонента со значением из значений по умолчанию.
static void installColors(JComponent c, String defaultBgName, String defaultFgName)
Метод для удобства установки свойств цвета переднего и заднего плана компонента со значениями из значений по умолчанию.
static void installColorsAndFont(JComponent c, String defaultBgName, String defaultFgName, String defaultFontName)
Метод для удобства установки свойств цвета переднего плана, фона и шрифта компонента со значениями из значений по умолчанию.
static void installProperty(JComponent c, String propertyName, Object propertyValue)
Метод для удобства установки свойства с указанным именем и значением на компоненте, если это свойство еще не было установлено разработчиком.
abstract boolean isNativeLookAndFeel()
Если базовой платформой имеет «родной» внешний вид, и это его реализация, верните true.
abstract boolean isSupportedLookAndFeel()
Возвращает true, если базовую платформу поддерживает или разрешает этот внешний вид.
static void loadKeyBindings(InputMap retMap, Object[] keys)
Заполняет InputMap указанными связываниями.
static ComponentInputMap makeComponentInputMap(JComponent c, Object[] keys)
Создает ComponentInputMapUIResource из keys.
static Object makeIcon(Class<?> baseClass, String gifFile)
Создает и возвращает UIDefault.LazyValue, который загружает изображение.
static InputMap makeInputMap(Object[] keys)
Создает InputMapUIResource из keys.
static JTextComponent.KeyBinding[] makeKeyBindings(Object[] keyBindingList)
Метод для удобства создания массива KeyBindings.
void provideErrorFeedback(Component component)
Вызывается, когда пользователь пытается выполнить недопустимую операцию, например, вставить в нередактируемое JTextField с фокусом.
String toString()
Возвращает строку, отображающую и идентифицирующую свойства этого объекта.
void uninitialize()
Деинициализирует внешний вид.
static void uninstallBorder(JComponent c)
Метод для удобства удаления границы.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

LookAndFeel

protected LookAndFeel()
Конструктор для вызова подклассами.

Подробное описание методов

installColors

public static void installColors(JComponent c, String defaultBgName, String defaultFgName)
Удобный метод для установки свойств цвета переднего и заднего плана компонента со значениями из значений по умолчанию. Свойства устанавливаются только в том случае, если текущее значение равно либо null либо UIResource.
Параметры:
c - компонент, на котором нужно установить цвета
defaultBgName - ключ для заднего плана
defaultFgName - ключ для переднего плана
Исключения:
NullPointerException - как описано в исключениях
См. также:
  • installColorsAndFont(javax.swing.JComponent, java.lang.String, java.lang.String, java.lang.String)
  • UIManager.getColor(java.lang.Object)

installColorsAndFont

public static void installColorsAndFont(JComponent c, String defaultBgName, String defaultFgName, String defaultFontName)
Удобный метод для установки свойств цвета переднего плана, заднего плана и шрифта компонента со значениями из значений по умолчанию. Свойства устанавливаются только в том случае, если текущее значение равно либо null либо UIResource.
Параметры:
c - компонент, на котором нужно установить цвета и шрифт
defaultBgName - ключ для заднего плана
defaultFgName - ключ для переднего плана
defaultFontName - ключ для шрифта
Исключения:
NullPointerException - как описано в исключениях
См. также:
  • installColors(javax.swing.JComponent, java.lang.String, java.lang.String)
  • UIManager.getColor(java.lang.Object)
  • UIManager.getFont(java.lang.Object)

installBorder

public static void installBorder(JComponent c, String defaultBorderName)
Удобный метод для установки свойства рамки компонента со значением из значений по умолчанию. Рамка устанавливается только если граница является null или экземпляром UIResource.
Параметры:
c - компонент, на котором нужно установить рамку
defaultBorderName - ключ, определяющий рамку
Исключения:
NullPointerException - как описано в исключениях

uninstallBorder

public static void uninstallBorder(JComponent c)
Удобный метод для удаления рамки. Если рамка компонента является UIResource, она устанавливается в null.
Параметры:
c - компонент, с которого нужно удалить рамку
Исключения:
NullPointerException - если c является null

installProperty

public static void installProperty(JComponent c, String propertyName, Object propertyValue)
Удобный метод для установки свойства с заданным именем и значением на компоненте, если это свойство еще не было установлено разработчиком. Этот метод предназначен для использования экземплярами делегата интерфейса UI, которые должны указать значение по умолчанию для свойства примитивного типа (boolean, int, ...), но не хотят переопределять значение, заданное клиентом. Поскольку значения примитивных свойств не могут быть обернуты маркером UIResource, этот метод использует внутреннее состояние для определения того, было ли свойство установлено клиентом.
Параметры:
c - целевой компонент, на котором нужно установить свойство
propertyName - имя свойства, которое нужно установить
propertyValue - значение свойства
Исключения:
IllegalArgumentException - если указанное свойство не является свойством, которое может быть установлено с помощью этого метода
ClassCastException - если значение свойства не было установлено разработчиком и тип не соответствует типу свойства
NullPointerException - если c является null, или заданное свойство не было установлено разработчиком и propertyValue является null
С момента:
1.5

makeKeyBindings

public static JTextComponent.KeyBinding[] makeKeyBindings(Object[] keyBindingList)
Удобный метод для построения массива KeyBindings. Хотя этот метод не устарел, разработчики должны вместо этого использовать ActionMap и InputMap для задания клавишных сочетаний.

Этот метод возвращает массив KeyBindings, по одному для каждой пары key-action в keyBindingList. Элемент key может быть либо String в формате, указанном методом KeyStroke.getKeyStroke, либо KeyStroke. Часть action пары представляет собой String, соответствующую имени Action.

Следующий пример демонстрирует создание массива KeyBinding из шести пар key-action:

  JTextComponent.KeyBinding[] multilineBindings = makeKeyBindings( new Object[] {
          "UP", DefaultEditorKit.upAction,
        "DOWN", DefaultEditorKit.downAction,
     "PAGE_UP", DefaultEditorKit.pageUpAction,
   "PAGE_DOWN", DefaultEditorKit.pageDownAction,
       "ENTER", DefaultEditorKit.insertBreakAction,
         "TAB", DefaultEditorKit.insertTabAction
  });
 
Если длина keyBindingList's нечётная, последний элемент игнорируется.

Предоставление значения null для key или action части пары key-action приводит к созданию KeyBinding с соответствующим значением null. Поскольку другие части Swing ожидают значения non-null в KeyBinding, следует избегать предоставления null в качестве key или action части пары key-action.

Параметры:
keyBindingList - массив пар key-action
Возвращает:
массив KeyBindings
Исключения:
NullPointerException - если keyBindingList является null
ClassCastException - если часть key пары не является KeyStroke или String, или часть action пары не является String
См. также:
  • ActionMap
  • InputMap
  • KeyStroke.getKeyStroke(char)

makeInputMap

public static InputMap makeInputMap(Object[] keys)
Создаёт InputMapUIResource из keys. Это удобный метод для создания нового InputMapUIResource, вызова loadKeyBindings(map, keys), и возвращения InputMapUIResource.
Параметры:
keys - чередующиеся пары keystroke-action key пар, как описано в loadKeyBindings(javax.swing.InputMap, java.lang.Object[])
Возвращает:
новосозданный и заполненный InputMapUIResource
С момента:
1.3
См. также:
  • loadKeyBindings(javax.swing.InputMap, java.lang.Object[])

makeComponentInputMap

public static ComponentInputMap makeComponentInputMap(JComponent c, Object[] keys)
Создаёт ComponentInputMapUIResource из keys. Это удобный метод для создания нового ComponentInputMapUIResource, вызова loadKeyBindings(map, keys), и возвращения ComponentInputMapUIResource.
Параметры:
c - компонент, с которым нужно создать ComponentInputMapUIResource
keys - чередующиеся пары keystroke-action key пар, как описано в loadKeyBindings(javax.swing.InputMap, java.lang.Object[])
Возвращает:
новосозданный и заполненный InputMapUIResource
Исключения:
IllegalArgumentException - если c является null
С момента:
1.3
См. также:
  • loadKeyBindings(javax.swing.InputMap, java.lang.Object[])
  • ComponentInputMapUIResource

loadKeyBindings

public static void loadKeyBindings(InputMap retMap, Object[] keys)
Заполняет InputMap заданными связями. Связи предоставляются в виде списка пар, чередующих keystroke-action key. keystroke — это экземпляр KeyStroke, или String, идентифицирующий KeyStroke для связи. Обратитесь к KeyStroke.getKeyStroke(String) для получения конкретного формата. Часть action key пары — это ключ, зарегистрированный в InputMap для KeyStroke.

Следующий пример демонстрирует загрузку InputMap с двумя парами key-action:

   LookAndFeel.loadKeyBindings(inputMap, new Object[] {
     "control X", "cut",
     "control V", "paste"
   });
 

Предоставление списка связей (keys) никак не меняет retMap.

Указание null action key приводит к удалению записи keystroke's из InputMap. null keystroke игнорируется.

Parameters:
retMap - InputMap для добавления пар key-action
keys - связи для добавления в retMap
Throws:
NullPointerException - если keys является non-null, не пустой, и retMap является null
Since:
1.3
See Also:
  • KeyStroke.getKeyStroke(String)
  • InputMap

makeIcon

public static Object makeIcon(Class<?> baseClass, String gifFile)
Создаёт и возвращает UIDefault.LazyValue для загрузки изображения. Возвращаемое значение является реализацией UIDefaults.LazyValue. При вызове createValue на возвращаемом объекте, изображение загружается. Если изображение non-null, оно затем оборачивается в Icon, который реализует UIResource. Загрузка изображения выполняется с помощью Class.getResourceAsStream(gifFile).

Этот метод никак не проверяет аргументы. Настоятельно рекомендуется, чтобы non-null значения были предоставлены, иначе могут возникнуть исключения при вызове createValue на возвращаемом объекте.

Parameters:
baseClass - Class для загрузки ресурса
gifFile - путь к изображению для загрузки
Returns:
a UIDefaults.LazyValue; при разрешении LazyValue загружает указанное изображение
See Also:
  • UIDefaults.LazyValue
  • Icon
  • Class.getResourceAsStream(String)

getLayoutStyle

public LayoutStyle getLayoutStyle()
Возвращает LayoutStyle для данного стиля оформления. Это никогда не возвращает null.

Обычно вы не используете LayoutStyle из стиля оформления, а вместо этого используйте метод LayoutStyle getInstance.

Returns:
the LayoutStyle для данного стиля оформления
Since:
1.6
See Also:
  • LayoutStyle.getInstance()

provideErrorFeedback

public void provideErrorFeedback(Component component)
Вызывается, когда пользователь пытается выполнить недопустимую операцию, например, вставить в недоступный JTextField с фокусом. По умолчанию воспроизводится звуковой сигнал. Подклассы, желающие изменить поведение, должны переопределить этот метод и предоставить дополнительную обратную связь.
Parameters:
component - Component с ошибкой, может быть null, указывающим, что состояние ошибки не напрямую связано с Component
Since:
1.4

getDesktopPropertyValue

public static Object getDesktopPropertyValue(String systemPropertyName, Object fallbackValue)
Возвращает значение указанной системной свойства рабочего стола, вызывая Toolkit.getDefaultToolkit().getDesktopProperty(). Если значение указанной свойства равно null, возвращается fallbackValue.
Parameters:
systemPropertyName - имя системной свойства рабочего стола, которое запрашивается
fallbackValue - объект, который будет возвращён в качестве значения, если системное значение равно null
Returns:
текущее значение свойства рабочего стола
Since:
1.4
See Also:
  • Toolkit.getDesktopProperty(java.lang.String)

getDisabledIcon

public Icon getDisabledIcon(JComponent component, Icon icon)
Возвращает Icon с отключённым внешним видом. Этот метод используется для генерации отключённого Icon при его отсутствии. Например, если вы создали JButton и указали только Icon через setIcon, этот метод будет вызван для генерации отключённого Icon. Если null передаётся как icon, этот метод возвращает null.

Некоторые стили оформления могут не отображать отключённое Icon, в этом случае они игнорируют это.

Parameters:
component - JComponent, отображающий Icon, может быть null
icon - Icon для генерации отключённого значка
Returns:
отключённый Icon, или null если подходящий Icon не может быть сгенерирован
Since:
1.5

getDisabledSelectedIcon

public Icon getDisabledSelectedIcon(JComponent component, Icon icon)
Возвращает Icon для использования отключёнными компонентами, которые также выделены. Этот метод используется для генерации Icon для компонентов, которые находятся в состояниях «отключено» и «выделено», но не имеют конкретного Icon для этого состояния. Например, если вы создали JButton и указали только Icon через setIcon, этот метод будет вызван для генерации отключённого и выделенного Icon. Если null передаётся как icon, этот метод возвращает null.

Некоторые стили оформления могут не отображать отключённое и выделенное Icon, в этом случае они игнорируют это.

Parameters:
component - JComponent, отображающий Icon, может быть null
icon - Icon для генерации отключённого и выделенного значка
Returns:
отключённый и выделенный значок, или null если подходящий Icon не может быть сгенерирован.
Since:
1.5

getName

public abstract String getName()
Возвращает короткую строку, идентифицирующую этот стиль оформления, например, "CDE/Motif". Эта строка должна быть подходящей для пункта меню. Разные стили оформления должны иметь разные имена, например, подкласс MotifLookAndFeel, изменяющий отображение нескольких компонентов, должен называться "CDE/Motif My Way"; это будет полезно пользователю, пытающемуся выбрать стиль оформления из списка имён.
Returns:
короткое имя для стиля оформления

getID

public abstract String getID()
Возвращает строку, идентифицирующую этот стиль оформления. Эта строка будет использоваться приложениями/службами, которые хотят распознать известные реализации стилей оформления. В настоящее время известные имена — "Motif", "Windows", "Mac", "Metal". Обратите внимание, что подкласс, унаследованный от известного суперкласса, который не вносит существенных изменений в вид или ощущения, не должен переопределять этот метод.
Returns:
идентификатор стиля оформления

getDescription

public abstract String getDescription()
Возвращает однострочное описание этой реализации стиля оформления, например, "Стиль оформления CDE/Motif". Эта строка предназначена для пользователя, например, в заголовке окна или в сообщении всплывающей подсказки.
Returns:
краткое описание стиля оформления

getSupportsWindowDecorations

public boolean getSupportsWindowDecorations()
Возвращает true, если LookAndFeel возвращаемые RootPaneUI экземпляры поддерживают предоставление Window декораций в JRootPane.

По умолчанию возвращается false, подклассы, поддерживающие Window декорации, должны переопределить этот метод и вернуть true.

Returns:
true если RootPaneUI экземпляры, созданные этим стилем оформления, поддерживают декорации на стороне клиента
Since:
1.4
See Also:
  • JDialog.setDefaultLookAndFeelDecorated(boolean)
  • JFrame.setDefaultLookAndFeelDecorated(boolean)
  • JRootPane.setWindowDecorationStyle(int)

isNativeLookAndFeel

public abstract boolean isNativeLookAndFeel()
Если на основе платформы есть "родной" стиль оформления, и это его реализация, верните true. Например, когда на платформе Solaris используется CDE, реализация стиля оформления CDE/Motif вернёт true.
Returns:
true если этот стиль оформления представляет собой стиль оформления родной платформы

isSupportedLookAndFeel

public abstract boolean isSupportedLookAndFeel()
Возвращает true если платформа поддерживает и разрешает данный вид и ощущения. Данный метод возвращает false если вид и ощущения зависят от специальных ресурсов или юридических соглашений, которые не определены для текущей платформы.
Возвращает:
true если данный вид и ощущения поддерживаются
См. также:
  • UIManager.setLookAndFeel(javax.swing.LookAndFeel)

initialize

public void initialize()
Инициализирует вид и ощущения. Хотя данный метод является публичным, его должен вызывать только UIManager при установке вида и ощущений в качестве текущего. Данный метод вызывается до того, как UIManager вызывает getDefaults. Данный метод предназначен для выполнения любой инициализации для вида и ощущений. Подклассы должны выполнять любое одноразовое настройка здесь, а не в статическом инициализаторе, поскольку объекты классов вида и ощущений могут загружаться только для того, чтобы обнаружить, что isSupportedLookAndFeel() возвращает false.
См. также:
  • uninitialize()
  • UIManager.setLookAndFeel(javax.swing.LookAndFeel)

uninitialize

public void uninitialize()
Деинициализирует вид и ощущения. Хотя данный метод является публичным, его должен вызывать только UIManager при удалении вида и ощущений. Например, UIManager.setLookAndFeel вызывает этот метод при изменении вида и ощущений.

Подклассы могут выбрать освобождение некоторых ресурсов здесь.

См. также:
  • initialize()
  • UIManager.setLookAndFeel(javax.swing.LookAndFeel)

getDefaults

public UIDefaults getDefaults()
Возвращает значения по умолчанию для вида и ощущений. Хотя данный метод является публичным, его должен вызывать только UIManager при установке вида и ощущений в качестве текущих и после вызова initialize.
Возвращает:
значения по умолчанию для вида и ощущений
См. также:
  • initialize()
  • uninitialize()
  • UIManager.setLookAndFeel(javax.swing.LookAndFeel)

toString

public String toString()
Возвращает строку, отображающую и идентифицирующую свойства данного объекта.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление данного объекта

© 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/LookAndFeel.html

Spec-Zone.ru

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