Класс 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() Получает текстовый компонент, связанный с этой реализацией UI. |
EditorKit |
getEditorKit(JTextComponent tc) Получает EditorKit для UI. |
protected String |
getKeymapName() Получает имя карты сочетаний клавиш, которая будет устанавливаться/использоваться по умолчанию для этого UI. |
Dimension |
getMaximumSize(JComponent c) Получает максимальный размер компонента редактора. |
Dimension |
getMinimumSize(JComponent c) Получает минимальный размер компонента редактора. |
int |
getNextVisualPositionFrom(JTextComponent t,
int pos,
Position.Bias b,
int direction,
Position.Bias[] biasRet) Предоставляет способ определения следующего визуально представленного расположения модели, в которое можно поместить курсор. |
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() Устанавливает слушателей для UI. |
void |
installUI(JComponent c) Устанавливает UI для компонента. |
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() Отменяет установку слушателей для UI. |
void |
uninstallUI(JComponent c) Отменяет установку UI для компонента. |
void |
update(Graphics g,
JComponent c) Предок отображает фон неконтролируемым способом (т. е. |
int |
viewToModel(JTextComponent tc,
Point pt) Преобразует заданное место в системе координат представления в ближайшее соответствующее расположение в модели. |
int |
viewToModel(JTextComponent tc,
Point pt,
Position.Bias[] biasReturn) Преобразует заданное место в системе координат представления в ближайшее соответствующее расположение в модели. |
Методы, унаследованные от класса 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 могут изменить, чтобы отразить, как интерфейс отображает связанные свойства подклассов JTextComponent. Реализовано так, что ничего не делает (т.е. ответы на свойства в самом JTextComponent обрабатываются до вызова этого метода). Эта реализация обновляет фон текстового компонента, если изменяются состояние редактируемости и/или состояния включения.
- Параметры:
-
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()
Устанавливает слушатели для интерфейса.
uninstallListeners
protected void uninstallListeners()
Удаляет слушателей для интерфейса.
installKeyboardActions
protected void installKeyboardActions()
uninstallKeyboardActions
protected void uninstallKeyboardActions()
paintBackground
protected void paintBackground(Graphics g)
Рисует фон для представления. Это будет вызвано только в том случае, если isOpaque() для ассоциированного компонента равно true. По умолчанию рисуется цвет фона компонента.
- Параметры:
-
g- контекст графики
getComponent
protected final JTextComponent getComponent()
Получает текстовый компонент, связанный с этой реализацией UI. Он будет null до установки интерфейса.
- Возвращает:
- компонент редактора
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- компонент, который рисуется; этот аргумент часто игнорируется, но может быть использован, если объект интерфейса бессостоятелен и используется несколькими компонентами - См. также:
-
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
public Rectangle modelToView(JTextComponent tc,
int pos)
throws BadLocationException Преобразует заданную позицию в модели в место в системе координат представления. Компонент должен иметь ненулевой положительный размер для вычисления этого преобразования.
- Определено в:
-
modelToViewв классеTextUI - Параметры:
-
tc- компонент текста, для которого установлен этот пользовательский интерфейс -
pos- локальная позиция в модели для преобразования >= 0 - Возвращает:
- координаты в виде прямоугольника, null, если модель не отрисована
- Исключения:
-
BadLocationException- если заданная позиция не представляет допустимую позицию в связанном документе - См. также:
TextUI.modelToView(javax.swing.text.JTextComponent, int)
modelToView
public Rectangle modelToView(JTextComponent tc,
int pos,
Position.Bias bias)
throws BadLocationException Преобразует заданную позицию в модели в место в системе координат представления. Компонент должен иметь ненулевой положительный размер для вычисления этого преобразования.
- Определено в:
-
modelToViewв классеTextUI - Параметры:
-
tc- компонент текста, для которого установлен этот пользовательский интерфейс -
pos- локальная позиция в модели для преобразования >= 0 - Возвращает:
- координаты в виде прямоугольника, null, если модель не отрисована
- Исключения:
-
BadLocationException- если заданная позиция не представляет допустимую позицию в связанном документе - См. также:
TextUI.modelToView(javax.swing.text.JTextComponent, int)
viewToModel
public int viewToModel(JTextComponent tc,
Point pt) Преобразует заданное место в системе координат представления в ближайшую репрезентативную позицию в модели. Компонент должен иметь ненулевой положительный размер для вычисления этого преобразования.
- Определено в:
-
viewToModelв классеTextUI - Параметры:
-
tc- компонент текста, для которого установлен этот пользовательский интерфейс -
pt- позиция в представлении для преобразования. Она должна быть в той же системе координат, что и события мыши. - Возвращает:
- смещение от начала документа >= 0, -1, если не отрисовано
- См. также:
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
viewToModel
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)
getNextVisualPositionFrom
public int getNextVisualPositionFrom(JTextComponent t,
int pos,
Position.Bias b,
int direction,
Position.Bias[] biasRet)
throws BadLocationException Предлагает способ определения следующей визуально представленной позиции в модели, куда можно поместить курсор. Некоторые представления могут быть не видны, они могут не находиться в том же порядке, что и в модели, или они просто могут не допускать доступа к некоторым позициям в модели.
- Определено в:
-
getNextVisualPositionFromв классеTextUI - Параметры:
-
t- компонент текста, для которого установлен этот пользовательский интерфейс -
pos- позиция для преобразования >= 0 -
b- смещение для позиции -
direction- направление от текущей позиции, которое можно представить стрелками на клавиатуре. Может быть SwingConstants.WEST, SwingConstants.EAST, SwingConstants.NORTH или SwingConstants.SOUTH -
biasRet- массив для хранения смещения для возвращаемой позиции - Возвращает:
- позицию в модели, которая лучше всего представляет следующую визуальную позицию
- Исключения:
BadLocationException
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
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 - С:
- 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.