Spec-Zone.ru › OpenJDK 8

Класс 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.

Конструкторы

Конструктор и описание
LookAndFeel()

Методы

Модификатор и тип Метод и описание
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 возвращает экземпляры RootPaneUI, поддерживающие декорации 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

public 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 игнорируется.

Параметры:
retMap - InputMap для добавления пар key-action
keys - привязки для добавления к retMap
Исключения:
NullPointerException - если keys равно non-null, не пусто, и retMap равно null
С:
1.3
См. также:
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 на возвращаемом объекте.

Параметры:
baseClass - Class используется для загрузки ресурса
gifFile - путь к изображению для загрузки
Возвращает:
объект UIDefaults.LazyValue; при разрешении LazyValue загружает указанное изображение
См. также:
UIDefaults.LazyValue, Icon, Class.getResourceAsStream(String)

getLayoutStyle

public LayoutStyle getLayoutStyle()

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

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

Возвращает:
стиль LayoutStyle для данного стиля оформления
С:
1.6
См. также:
LayoutStyle.getInstance()

provideErrorFeedback

public void provideErrorFeedback(Component component)

Вызывается, когда пользователь пытается выполнить недопустимую операцию, например, вставить данные в недоступное для редактирования JTextField с фокусом. По умолчанию издаётся звуковой сигнал. Подклассы, желающие другого поведения, должны переопределить этот метод и предоставить дополнительную обратную связь.

Параметры:
component - Component компонент, в котором произошла ошибка, может быть null , указывающий на то, что состояние ошибки не напрямую связано с Component
С:
1.4

getDesktopPropertyValue

public static Object getDesktopPropertyValue(String systemPropertyName,
                                             Object fallbackValue)

Возвращает значение указанной системной свойства рабочего стола, вызывая Toolkit.getDefaultToolkit().getDesktopProperty(). Если значение указанного свойства null, возвращается fallbackValue.

Параметры:
systemPropertyName - имя системной свойства рабочего стола, которое запрашивается
fallbackValue - объект, который должен быть возвращён в качестве значения, если системное значение равно null
Возвращает:
текущее значение свойства рабочего стола
С:
1.4
См. также:
Toolkit.getDesktopProperty(java.lang.String)

getDisabledIcon

public Icon getDisabledIcon(JComponent component,
                            Icon icon)

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

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

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

getDisabledSelectedIcon

public Icon getDisabledSelectedIcon(JComponent component,
                                    Icon icon)

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

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

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

getName

public abstract String getName()

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

Возвращает:
короткое имя стиля оформления

getID

public abstract String getID()

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

Возвращает:
идентификатор стиля оформления

getDescription

public abstract String getDescription()

Возвращает однострочное описание реализации этого стиля оформления, например, "Стиль оформления CDE/Motif". Эта строка предназначена для пользователя, например, в заголовке окна или в сообщении подсказки.

Возвращает:
краткое описание стиля оформления

getSupportsWindowDecorations

public boolean getSupportsWindowDecorations()

Возвращает true, если LookAndFeel возвращает RootPaneUI экземпляры, поддерживают предоставление Window украшений в JRootPane.

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

Возвращает:
true если RootPaneUI экземпляры, созданные этим стилем оформления, поддерживают украшения на стороне клиента
С:
1.4
См. также:
JDialog.setDefaultLookAndFeelDecorated(boolean), JFrame.setDefaultLookAndFeelDecorated(boolean), JRootPane.setWindowDecorationStyle(int)

isNativeLookAndFeel

public abstract boolean isNativeLookAndFeel()

Если в базовой платформе есть "родной" стиль оформления, и это его реализация, вернуть true. Например, когда базовая платформа Solaris с CDE, реализация стиля оформления CDE/Motif вернёт true.

Возвращает:
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, 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.

Spec-Zone.ru

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