Класс BasicTextUI

Все реализованные интерфейсы:
ViewFactory
Непосредственные известные подклассы:
BasicEditorPaneUI, BasicTextAreaUI, BasicTextFieldUI, DefaultTextUI
public abstract class BasicTextUI
extends TextUI
implements ViewFactory

Основа визуального стиля компонентов текста. Предоставляет базовые сервисы отображения и управления редактированием текста, которые могут быть полезны при создании визуального стиля для расширения JTextComponent.

Большинство состояний хранятся в связанных JTextComponent как связанные свойства, и UI устанавливает значения по умолчанию для различных свойств. Это значение по умолчанию устанавливается для всех свойств. Однако обычно реализация LAF делает больше. Как минимум, реализация LAF обычно устанавливает сочетания клавиш.

Этот класс также предоставляет некоторую поддержку многопоточности, если Document связанный с JTextComponent является подклассом AbstractDocument. Доступ к представлению (или иерархии представлений) сериализован между любым потоком, изменяющим модель, и потоком обработки событий Swing (который, как ожидается, будет выполнять отрисовку, выполнять преобразование координат модель/представление и т. д.). Любой доступ к корневому представлению должен сначала получить чтение-блокировку на AbstractDocument и освободить эту блокировку в блоке finally.

Важным методом для определения является метод getPropertyPrefix(), который используется как основа ключей для получения значений по умолчанию из UIManager. Строка должна отражать тип TextUI (например, TextField, TextArea и т. д.) без конкретной части имени LAF (например, Metal, Motif и т. д.).

Для построения представления модели можно использовать один из следующих подходов.

  1. Один из подходов — просто переопределить интерфейс ViewFactory в UI. По умолчанию этот UI сам выступает в качестве фабрики для реализаций View. Это полезно для простых фабрик. Для этого переопределите метод create(javax.swing.text.Element).
  2. Распространённый подход для создания более сложных типов документов — это использование реализации EditorKit для возврата фабрики. Поскольку EditorKit связывает все необходимые компоненты для поддержания типа документа, фабрика обычно является важной частью этого и должна быть создана реализацией EditorKit.

Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для кратковременного хранения или RMI между приложениями, работающими с одной и той же версией Swing. Начиная с версии 1.4, поддержка долговременного хранения всех JavaBeans™ была добавлена в пакет java.beans. См. XMLEncoder.

Вложенные классы

Модификатор и тип Класс Описание
static class  BasicTextUI.BasicCaret

Реализация по умолчанию интерфейса Caret.

static class  BasicTextUI.BasicHighlighter

Реализация по умолчанию интерфейса Highlighter.

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

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

Создаёт новый UI.

Методы

Модификатор и тип Метод Описание
View create​(Element elem)

Создаёт представление для элемента.

View create​(Element elem, int p0, int p1)

Создаёт представление для элемента.

protected Caret createCaret()

Создаёт объект для использования с курсором.

protected Highlighter createHighlighter()

Создаёт объект для добавления выделений.

protected Keymap createKeymap()

Создаёт карту клавиш для текстового компонента и устанавливает необходимые привязки в неё.

void damageRange​(JTextComponent tc, int p0, int p1)

Перерисовывает часть представления, отвечающую за заданную часть модели.

void damageRange​(JTextComponent t, int p0, int p1, Position.Bias p0Bias, Position.Bias p1Bias)

Перерисовывает часть представления, отвечающую за заданную часть модели.

protected JTextComponent getComponent()

Получает текстовый компонент, связанный с этим интерфейсом пользователя.

EditorKit getEditorKit​(JTextComponent tc)

Получает EditorKit для пользовательского интерфейса.

protected String getKeymapName()

Получает имя карты клавиш, которая будет установлена/использоваться по умолчанию для этого пользовательского интерфейса.

Dimension getMaximumSize​(JComponent c)

Получает максимальный размер компонента редактора.

Dimension getMinimumSize​(JComponent c)

Получает минимальный размер компонента редактора.

Dimension getPreferredSize​(JComponent c)

Получает предпочтительный размер компонента редактора.

protected abstract String getPropertyPrefix()

Получает имя, используемое в качестве ключа для поиска свойств через UIManager.

View getRootView​(JTextComponent tc)

Получает представление с выделением связанного текстового компонента (то есть корня иерархии), которое можно пройти для определения того, как модель отображается пространственно.

String getToolTipText​(JTextComponent t, Point pt)

Возвращает строку, используемую в качестве всплывающей подсказки в указанном месте.

protected Rectangle getVisibleEditorRect()

Получает выделение для корневого представления.

protected void installDefaults()

Инициализирует свойства компонента, такие как шрифт, цвет переднего плана, цвет заднего плана, цвет курсора, цвет выделения, цвет выделенного текста, цвет текста при отключении и цвет границы.

protected void installKeyboardActions()

Регистрирует действия с клавиатурой.

protected void installListeners()

Устанавливает слушателей для пользовательского интерфейса.

void installUI​(JComponent c)

Устанавливает пользовательский интерфейс для компонента.

protected void modelChanged()

Помечает изменения в модели.

Rectangle modelToView​(JTextComponent tc, int pos)

Устаревшее.

Rectangle modelToView​(JTextComponent tc, int pos, Position.Bias bias)

Устаревшее.

void paint​(Graphics g, JComponent c)

Отображает интерфейс.

protected void paintBackground​(Graphics g)

Отображает фон для представления.

protected void paintSafely​(Graphics g)

Безопасно отображает интерфейс, гарантируя, что модель не изменится с точки зрения этого потока.

protected void propertyChange​(PropertyChangeEvent evt)

Этот метод вызывается при изменении связанного свойства на связанном JTextComponent.

protected void setView​(View v)

Устанавливает текущий корень иерархии представления и вызывает invalidate().

protected void uninstallDefaults()

Устанавливает свойства компонента, которые не были явно переопределены, в null.

protected void uninstallKeyboardActions()

Отменяет регистрацию действий с клавиатурой.

protected void uninstallListeners()

Отменяет установку слушателей для пользовательского интерфейса.

void uninstallUI​(JComponent c)

Удаляет пользовательский интерфейс для компонента.

void update​(Graphics g, JComponent c)

Предок рисует фон неконтролируемым способом (например, можно использовать плитку изображения в качестве фона).

int viewToModel​(JTextComponent tc, Point pt)

Устаревшее.

int viewToModel​(JTextComponent tc, Point pt, Position.Bias[] biasReturn)

Устаревшее.

Методы, объявленные в классе javax.swing.plaf.TextUI

getNextVisualPositionFrom, getToolTipText2D, modelToView2D, viewToModel2D

Методы, объявленные в классе javax.swing.plaf.ComponentUI

contains, createUI, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior

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

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

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

BasicTextUI

public BasicTextUI()

Создаёт новый интерфейс.

Методы

createCaret

protected Caret createCaret()

Создаёт объект для курсора. По умолчанию создаётся экземпляр BasicCaret. Этот метод можно переопределить, чтобы использовать что-то другое, что реализует интерфейс InputPosition или подкласс JCaret.

Возвращает:
объект курсора

createHighlighter

protected Highlighter createHighlighter()

Создаёт объект для добавления выделений. По умолчанию создаётся экземпляр BasicHighlighter. Этот метод можно переопределить, чтобы использовать что-то другое, что реализует интерфейс Highlighter или подкласс DefaultHighlighter.

Возвращает:
выделитель

getKeymapName

protected String getKeymapName()

Получает имя раскладки клавиатуры, которая будет установлена/использоваться по умолчанию для данного интерфейса. Реализуется для создания имени на основе имени класса. Имя — это имя класса с удалённым префиксом пакета.

Возвращает:
имя

createKeymap

protected Keymap createKeymap()

Создаёт раскладку клавиатуры для текстового компонента и устанавливает необходимые привязки к ней. По умолчанию раскладка клавиатуры используется всеми экземплярами этого типа TextUI. Раскладка клавиатуры имеет имя, определённое методом getKeymapName. Если раскладка клавиатуры не найдена, используется DEFAULT_KEYMAP из JTextComponent.

Набор привязок, используемых для создания раскладки клавиатуры, извлекается из UIManager с помощью ключа, образованного из комбинации метода getPropertyPrefix() и строки .keyBindings. Тип ожидается как JTextComponent.KeyBinding[].

Возвращает:
раскладку клавиатуры
См. также:
getKeymapName(), JTextComponent

propertyChange

protected void propertyChange(PropertyChangeEvent evt)

Этот метод вызывается при изменении связанного свойства в связанном JTextComponent. Это метод-обработчик, реализация UI может изменить его, чтобы отразить, как UI отображает связанные свойства подклассов JTextComponent. Эта реализация ничего не делает (т.е. реакция на свойства в самом JTextComponent обрабатывается до вызова этого метода). Эта реализация обновляет фон текстового компонента, если изменяются состояния editable и/или enabled.

Параметры:
evt - событие изменения свойства

getPropertyPrefix

protected abstract String getPropertyPrefix()

Получает имя, используемое в качестве ключа для поиска свойств через UIManager. Используется в качестве префикса для всех стандартных текстовых свойств.

Возвращает:
имя

installDefaults

protected void installDefaults()

Инициализирует свойства компонента, такие как шрифт, цвет переднего плана, цвет фона, цвет курсора, цвет выделения, цвет выделенного текста, цвет отключённого текста и цвет рамки. Свойства шрифта, цвета переднего плана и цвета фона устанавливаются только в том случае, если их текущее значение равно null или UIResource, другие свойства устанавливаются, если текущее значение равно null.

См. также:
uninstallDefaults(), installUI(javax.swing.JComponent)

uninstallDefaults

protected void uninstallDefaults()

Устанавливает свойства компонента, которые не были явно переопределены, в значение null. Свойство считается переопределённым, если его текущее значение не является UIResource.

См. также:
installDefaults(), uninstallUI(javax.swing.JComponent)

installListeners

protected void installListeners()

Устанавливает слушатели для UI.

uninstallListeners

protected void uninstallListeners()

Удаляет слушателей для UI.

installKeyboardActions

protected void installKeyboardActions()

Регистрирует действия клавиатуры.

uninstallKeyboardActions

protected void uninstallKeyboardActions()

Удаляет регистрацию действий клавиатуры.

paintBackground

protected void paintBackground(Graphics g)

Рисует фон для представления. Этот метод вызывается только в том случае, если isOpaque() для связанного компонента равно true. По умолчанию рисуется цвет фона компонента.

Параметры:
g - контекст графики

getComponent

protected final JTextComponent getComponent()

Получает текстовый компонент, связанный с этой реализацией UI. Будет null до установки UI.

Возвращает:
компонент редактора

modelChanged

protected void modelChanged()

Помечает изменения модели. Вызывается всякий раз, когда изменяется модель. Реализуется для перестроения иерархии представлений, чтобы отразить корневой элемент модели.

setView

protected final void setView(View v)

Устанавливает текущий корень иерархии представлений и вызывает invalidate(). Если были какие-либо дочерние компоненты, они будут удалены (предполагается, что они пришли из компонентов, встроенных в представления).

Параметры:
v - корневое представление

paintSafely

protected void paintSafely(Graphics g)

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

  1. Если компонент отмечен как непрозрачный, фон рисуется текущим цветом фона компонента.
  2. Рисуются выделения (если есть).
  3. Рисуется иерархия представлений.
  4. Рисуется курсор.

Параметры:
g - контекст графики

installUI

public void installUI(JComponent c)

Устанавливает UI для компонента. Выполняет следующие действия.

  1. Устанавливает связанный компонент как непрозрачный, если свойство opaque не было установлено программой. Это заставит компонент отрисовывать свой цвет фона.
  2. Устанавливает значения по умолчанию для курсора и выделения в связанном компоненте. Эти свойства устанавливаются только в том случае, если их текущее значение равно null или экземпляру UIResource.
  3. Присоединяется к редактору и модели. Если модели нет, создаётся модель по умолчанию.
  4. Создаёт фабрику представлений и иерархию представлений, используемых для представления модели.

Переопределяет:
installUI в классе ComponentUI
Параметры:
c - компонент редактора
См. также:
ComponentUI.installUI(javax.swing.JComponent)

uninstallUI

public void uninstallUI(JComponent c)

Удаляет UI для компонента. Удаляет слушателей, удаляет выделение, удаляет представления и обнуляет раскладку клавиатуры.

Переопределяет:
uninstallUI в классе ComponentUI
Параметры:
c - компонент редактора
См. также:
ComponentUI.uninstallUI(javax.swing.JComponent)

update

public void update(Graphics g,
                   JComponent c)

Предок рисует фон неуправляемым образом (т.е. можно захотеть использовать плитку изображения в фоне). Чтобы предотвратить это от двукратного рисования, этот метод переопределяется для простого рисования.

ПРИМЕЧАНИЕ: Предок также не потокобезопасен в отрисовке фона, хотя это не проблема в стандартной отрисовке.

Переопределяет:
update в классе ComponentUI
Параметры:
g - контекст рисования
c - компонент, который рисуется; этот аргумент часто игнорируется, но может использоваться, если объект UI без состояния и используется несколькими компонентами
См. также:
ComponentUI.paint(java.awt.Graphics, javax.swing.JComponent), JComponent.paintComponent(java.awt.Graphics)

paint

public final void paint(Graphics g,
                        JComponent c)

Рисует интерфейс. Это перенаправляется в метод paintSafely с гарантией, что модель не изменится с точки зрения этого потока во время отрисовки (если связанная модель наследуется от AbstractDocument). Это позволяет модели потенциально обновляться асинхронно.

Переопределяет:
paint в классе ComponentUI
Параметры:
g - контекст графики
c - компонент редактора
См. также:
ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)

getPreferredSize

public Dimension getPreferredSize(JComponent c)

Получает предпочтительный размер для компонента редактора. Если компоненту был задан размер до получения этого запроса, он установит размер иерархии представлений, чтобы отразить размер компонента, прежде чем запросить предпочтительный размер иерархии представлений. Это позволяет отформатированным представлениям отформатировать размер текущего компонента перед ответом на запрос. Другие представления не заботятся о текущем отформатированном размере и возвращают тот же ответ в любом случае.

Переопределяет:
getPreferredSize в классе ComponentUI
Параметры:
c - компонент редактора
Возвращает:
размер
См. также:
JComponent.getPreferredSize(), LayoutManager.preferredLayoutSize(java.awt.Container)

getMinimumSize

public Dimension getMinimumSize(JComponent c)

Получает минимальный размер для компонента редактора.

Переопределяет:
getMinimumSize в классе ComponentUI
Параметры:
c - компонент редактора
Возвращает:
размер
См. также:
JComponent.getMinimumSize(), LayoutManager.minimumLayoutSize(java.awt.Container), ComponentUI.getPreferredSize(javax.swing.JComponent)

getMaximumSize

public Dimension getMaximumSize(JComponent c)

Получает максимальный размер для компонента редактора.

Переопределяет:
getMaximumSize в классе ComponentUI
Параметры:
c - компонент редактора
Возвращает:
размер
См. также:
JComponent.getMaximumSize(), LayoutManager2.maximumLayoutSize(java.awt.Container)

getVisibleEditorRect

protected Rectangle getVisibleEditorRect()

Получает выделение для корневого представления. Из-за неудачных исторических событий, это имя метода неуместно. Прямоугольник, возвращаемый методом, не имеет ничего общего с видимостью. Компонент должен иметь ненулевой положительный размер для вычисления этого преобразования.

Возвращает:
прямоугольник, определяющий границы корневого представления

modelToView

@Deprecated(since="9")
public Rectangle modelToView(JTextComponent tc,
                             int pos)
                      throws BadLocationException
Устаревшее.

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

Определено в:
modelToView в классе TextUI
Параметры:
tc - компонент текста, для которого установлен данный пользовательский интерфейс
pos - локальное положение в модели, подлежащее преобразованию >= 0
Возвращает:
координаты в виде прямоугольника, null, если модель не отображается
Исключения:
BadLocationException - если заданная позиция не представляет действительное местоположение в связанном документе
См. также:
TextUI.modelToView(javax.swing.text.JTextComponent, int)

modelToView

@Deprecated(since="9")
public Rectangle modelToView(JTextComponent tc,
                             int pos,
                             Position.Bias bias)
                      throws BadLocationException
Устаревшее.

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

Определено в:
modelToView в классе TextUI
Параметры:
tc - компонент текста, для которого установлен данный пользовательский интерфейс
pos - локальное положение в модели, подлежащее преобразованию >= 0
bias - смещение для позиции
Возвращает:
координаты в виде прямоугольника, null, если модель не отображается
Исключения:
BadLocationException - если заданная позиция не представляет действительное местоположение в связанном документе
См. также:
TextUI.modelToView(javax.swing.text.JTextComponent, int)

viewToModel

@Deprecated(since="9")
public int viewToModel(JTextComponent tc,
                       Point pt)
Устаревшее.

Преобразует заданное положение в системе координат представления в ближайшее представительное положение в модели. Компонент должен иметь ненулевой положительный размер для вычисления этого преобразования.

Определено в:
viewToModel в классе TextUI
Параметры:
tc - компонент текста, для которого установлен данный пользовательский интерфейс
pt - местоположение в представлении, подлежащее преобразованию. Оно должно быть в той же системе координат, что и события мыши.
Возвращает:
смещение от начала документа >= 0, -1, если не отображается
См. также:
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)

viewToModel

@Deprecated(since="9")
public int viewToModel(JTextComponent tc,
                       Point pt,
                       Position.Bias[] biasReturn)
Устаревшее.

Преобразует заданное положение в системе координат представления в ближайшее представительное положение в модели. Компонент должен иметь ненулевой положительный размер для вычисления этого преобразования.

Определено в:
viewToModel в классе TextUI
Параметры:
tc - компонент текста, для которого установлен данный пользовательский интерфейс
pt - местоположение в представлении, подлежащее преобразованию. Оно должно быть в той же системе координат, что и события мыши.
biasReturn - заполняется этим методом для указания, ближе ли данная точка к предыдущему или следующему символу в модели
Возвращает:
смещение от начала документа >= 0, -1, если компонент еще не имеет положительного размера.
См. также:
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)

damageRange

public void damageRange(JTextComponent tc,
                        int p0,
                        int p1)

Принудительно перерисовывает часть представления, отвечающую за заданную часть модели. Ничего не делает, если представление в данный момент не отображается.

Определено в:
damageRange в классе TextUI
Параметры:
tc - компонент текста, для которого установлен данный пользовательский интерфейс
p0 - начало диапазона >= 0
p1 - конец диапазона >= p0
См. также:
TextUI.damageRange(javax.swing.text.JTextComponent, int, int)

damageRange

public void damageRange(JTextComponent t,
                        int p0,
                        int p1,
                        Position.Bias p0Bias,
                        Position.Bias p1Bias)

Принудительно перерисовывает часть представления, отвечающую за заданную часть модели.

Определено в:
damageRange в классе TextUI
Параметры:
p0 - начало диапазона >= 0
p1 - конец диапазона >= p0
t - компонент текста, для которого установлен данный пользовательский интерфейс
p0Bias - смещение первого символа, к предыдущему или следующему символу
p1Bias - смещение второго символа, к предыдущему или следующему символу

getEditorKit

public EditorKit getEditorKit(JTextComponent tc)

Получает EditorKit для пользовательского интерфейса.

Определено в:
getEditorKit в классе TextUI
Параметры:
tc - компонент текста, для которого установлен данный пользовательский интерфейс
Возвращает:
возможности редактора
См. также:
TextUI.getEditorKit(javax.swing.text.JTextComponent)

getRootView

public View getRootView(JTextComponent tc)

Получает представление с выделением связанного компонента текста (т. е. корня иерархии), которое можно использовать для определения того, как модель пространственно представлена.

Предупреждение: Иерархия представлений может быть пройдена от корневого представления, а также могут выполняться и другие операции. Операции такого рода не защищены, как простые вызовы методов через TextUI. Поэтому любая логика, вызывающая этот метод, должна обеспечить правильную работу в условиях конкурентного доступа!

Определено в:
getRootView в классе TextUI
Параметры:
tc - компонент текста, для которого установлен данный пользовательский интерфейс
Возвращает:
представление
См. также:
TextUI.getRootView(javax.swing.text.JTextComponent)

getToolTipText

public String getToolTipText(JTextComponent t,
                             Point pt)

Возвращает строку, используемую в качестве всплывающей подсказки в заданном месте. Этот метод передает запрос корневому представлению.

Переопределяет:
getToolTipText в классе TextUI
Параметры:
t - компонент текста, для которого установлен данный пользовательский интерфейс
pt - точка, определяющая местоположение, для которого требуется получить всплывающую подсказку
Возвращает:
строку, содержащую всплывающую подсказку
С тех пор как:
1.4
См. также:
JTextComponent.getToolTipText(java.awt.event.MouseEvent), View.getToolTipText(float, float, java.awt.Shape)

create

public View create(Element elem)

Создаёт представление для элемента. Если подкласс хочет напрямую реализовать фабрику, производящую представление(я), он должен переопределить этот метод. По умолчанию он просто возвращает null, указывая на невозможность представления элемента.

Определено в:
create в интерфейсе ViewFactory
Параметры:
elem - элемент
Возвращает:
представление
См. также:
View

create

public View create(Element elem,
                   int p0,
                   int p1)

Создаёт представление для элемента. Если подкласс хочет напрямую реализовать фабрику, производящую представление(я), он должен переопределить этот метод. По умолчанию он просто возвращает null, указывая на невозможность представления части элемента.

Параметры:
elem - элемент
p0 - начальный смещение >= 0
p1 - конечный смещение >= p0
Возвращает:
представление

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

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