Spec-Zone.ru › OpenJDK 17

Класс 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. Обратитесь к UIDefaults.getUI(JComponent) для получения подробностей о том, как получить реализацию подкласса ComponentUI.

При установке 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)
Удобный метод для установки свойства с указанным именем и значением на компонент, если это свойство еще не было установлено разработчиком. Этот метод предназначен для использования экземплярами делегата пользовательского интерфейса, которым необходимо указать значение по умолчанию для свойства примитивного типа (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"
   });
 

Предоставление списка связей null (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 экземпляры поддерживают предоставление Window декораций в JRootPane.

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

Returns:
true если экземпляры, созданные этой темой оформления, поддерживают декорации на стороне клиента
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, 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/LookAndFeel.html

Spec-Zone.ru

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