Класс BasicTextUI
- java.lang.Object
-
- javax.swing.plaf.ComponentUI
-
- javax.swing.plaf.TextUI
-
- javax.swing.plaf.basic.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 и т. д.).
Для построения представления модели можно использовать один из следующих подходов.
- Один из подходов — просто переопределить интерфейс ViewFactory в UI. По умолчанию этот UI сам выступает в качестве фабрики для реализаций View. Это полезно для простых фабрик. Для этого переопределите метод
create(javax.swing.text.Element). - Распространённый подход для создания более сложных типов документов — это использование реализации EditorKit для возврата фабрики. Поскольку EditorKit связывает все необходимые компоненты для поддержания типа документа, фабрика обычно является важной частью этого и должна быть создана реализацией EditorKit.
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для кратковременного хранения или RMI между приложениями, работающими с одной и той же версией Swing. Начиная с версии 1.4, поддержка долговременного хранения всех JavaBeans™ была добавлена в пакет java.beans. См. XMLEncoder.
Вложенные классы
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class | BasicTextUI.BasicCaret | Реализация по умолчанию интерфейса |
static class | BasicTextUI.BasicHighlighter | Реализация по умолчанию интерфейса |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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() | Устанавливает свойства компонента, которые не были явно переопределены, в |
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)
Безопасно рисует интерфейс с гарантией, что модель не изменится с точки зрения этого потока во время отрисовки. Выполняет следующие действия, отрисовывая сверху вниз.
- Если компонент отмечен как непрозрачный, фон рисуется текущим цветом фона компонента.
- Рисуются выделения (если есть).
- Рисуется иерархия представлений.
- Рисуется курсор.
- Параметры:
-
g- контекст графики
installUI
public void installUI(JComponent c)
Устанавливает UI для компонента. Выполняет следующие действия.
- Устанавливает связанный компонент как непрозрачный, если свойство opaque не было установлено программой. Это заставит компонент отрисовывать свой цвет фона.
- Устанавливает значения по умолчанию для курсора и выделения в связанном компоненте. Эти свойства устанавливаются только в том случае, если их текущее значение равно
nullили экземпляруUIResource. - Присоединяется к редактору и модели. Если модели нет, создаётся модель по умолчанию.
- Создаёт фабрику представлений и иерархию представлений, используемых для представления модели.
- Переопределяет:
-
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