Класс 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.
Краткое описание вложенных классов
| Modifier and Type | Class | Description |
|---|---|---|
static class |
BasicTextUI.BasicCaret |
Базовая реализация интерфейса Caret. |
static class |
BasicTextUI.BasicHighlighter |
Базовая реализация интерфейса Highlighter. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
BasicTextUI() |
Создает новый UI. |
Краткое описание методов
| Modifier and Type | Метод | Описание |
|---|---|---|
View |
create |
Создает представление для элемента. |
View |
create |
Создает представление для элемента. |
protected Caret |
createCaret() |
Создает объект для курсора. |
protected Highlighter |
createHighlighter() |
Создает объект для добавления выделений. |
protected Keymap |
createKeymap() |
Создает схему навигации для текстового компонента и устанавливает необходимые привязки в него. |
void |
damageRange |
Перерисовывает часть представления, отвечающую за указанную часть модели. |
void |
damageRange |
Перерисовывает часть представления, отвечающую за указанную часть модели. |
protected final JTextComponent |
getComponent() |
Получает текстовый компонент, связанный с этой реализацией UI. |
EditorKit |
getEditorKit |
Получает EditorKit для UI. |
protected String |
getKeymapName() |
Получает имя схемы навигации, которая будет установлена/использоваться по умолчанию для этого UI. |
Dimension |
getMaximumSize |
Получает максимальный размер компонента редактора. |
Dimension |
getMinimumSize |
Получает минимальный размер компонента редактора. |
int |
getNextVisualPositionFrom |
Предоставляет способ определения следующего визуально представленного расположения модели, в которое можно поместить курсор. |
Dimension |
getPreferredSize |
Получает предпочтительный размер компонента редактора. |
protected abstract String |
getPropertyPrefix() |
Получает имя, используемое в качестве ключа для поиска свойств через UIManager. |
View |
getRootView |
Получает представление с выделением соответствующего текстового компонента (т.е. корня иерархии), которое можно пройти, чтобы определить, как модель представлена пространственно. |
String |
getToolTipText |
Возвращает строку, используемую в качестве всплывающей подсказки в указанном месте. |
protected Rectangle |
getVisibleEditorRect() |
Получает выделение для корневого представления. |
protected void |
installDefaults() |
Инициализирует свойства компонента, такие как шрифт, цвет текста, цвет фона, цвет курсора, цвет выделения, цвет выделенного текста, цвет текста при отключении, граница и отступ. |
protected void |
installKeyboardActions() |
Регистрирует действия клавиатуры. |
protected void |
installListeners() |
Устанавливает слушателей для UI. |
void |
installUI |
Устанавливает UI для компонента. |
protected void |
modelChanged() |
Помечает изменения в модели. |
Rectangle |
modelToView |
Устарело. |
Rectangle |
modelToView |
Устарело. |
final void |
paint |
Рисует интерфейс. |
protected void |
paintBackground |
Рисует фон для представления. |
protected void |
paintSafely |
Безопасно рисует интерфейс с гарантией, что модель не изменится с точки зрения этого потока. |
protected void |
propertyChange |
Этот метод вызывается при изменении связанного свойства на связанном JTextComponent. |
protected final void |
setView |
Устанавливает текущий корень иерархии представления и вызывает invalidate(). |
protected void |
uninstallDefaults() |
Устанавливает свойства компонента, которые не были явно переопределены, на null. |
protected void |
uninstallKeyboardActions() |
Отменяет регистрацию действий клавиатуры. |
protected void |
uninstallListeners() |
Отменяет установку слушателей для UI. |
void |
uninstallUI |
Отменяет установку UI для компонента. |
void |
update |
Предковый класс рисует фон непредсказуемым образом (например, можно отобразить плитку изображения на фоне). |
int |
viewToModel |
Устарело. |
int |
viewToModel |
Устарело. |
Методы, объявленные в классе javax.swing.plaf.TextUI
getToolTipText2D, modelToView2D, viewToModel2D
Методы, объявленные в классе javax.swing.plaf.ComponentUI
contains, createUI, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior
Подробное описание конструкторов
BasicTextUI
public BasicTextUI()
Подробное описание методов
createCaret
protected Caret createCaret()
- Возвращает:
- объект курсора
createHighlighter
protected Highlighter createHighlighter()
- Возвращает:
- выделитель
getKeymapName
protected String getKeymapName()
- Возвращает:
- имя
createKeymap
protected Keymap createKeymap()
Набор привязок, используемых для создания раскладки, извлекается из UIManager с использованием ключа, образованного путём объединения метода getPropertyPrefix() и строки .keyBindings. Тип ожидается как JTextComponent.KeyBinding[].
- Возвращает:
- раскладку клавиатуры
- См. также:
propertyChange
protected void propertyChange(PropertyChangeEvent evt)
- Параметры:
-
evt- событие изменения свойства
getPropertyPrefix
protected abstract String getPropertyPrefix()
- Возвращает:
- имя
installDefaults
protected void installDefaults()
- См. также:
uninstallDefaults
protected void uninstallDefaults()
null. Свойство считается переопределённым, если его текущее значение не является UIResource.- См. также:
installListeners
protected void installListeners()
uninstallListeners
protected void uninstallListeners()
installKeyboardActions
protected void installKeyboardActions()
uninstallKeyboardActions
protected void uninstallKeyboardActions()
paintBackground
protected void paintBackground(Graphics g)
- Параметры:
-
g- контекст графики
getComponent
protected final JTextComponent getComponent()
- Возвращает:
- компонент редактора
modelChanged
protected void modelChanged()
setView
protected final void setView(View v)
- Параметры:
-
v- корневое представление
paintSafely
protected void paintSafely(Graphics g)
- Если компонент отмечен как непрозрачный, фон рисуется текущим цветом фона компонента.
- Рисуются выделения (если есть).
- Рисуется иерархия представлений.
- Рисуется курсор.
- Параметры:
-
g- контекст графики
installUI
public void installUI(JComponent c)
- Устанавливает ассоциированный компонент непрозрачным, если свойство opaque ещё не установлено программой-клиентом. Это заставит компонент нарисовать его цвет фона.
- Устанавливает по умолчанию курсор и выделитель в ассоциированный компонент. Эти свойства устанавливаются только в том случае, если их текущее значение равно
nullили экземпляруUIResource. - Прикрепляется к редактору и модели. Если модели нет, создаётся модель по умолчанию.
- Создаётся фабрика представлений и иерархия представлений, используемая для представления модели.
- Переопределяет:
-
installUIв классеComponentUI - Параметры:
-
c- компонент редактора - См. также:
uninstallUI
public void uninstallUI(JComponent c)
- Переопределяет:
-
uninstallUIв классеComponentUI - Параметры:
-
c- компонент редактора - См. также:
update
public void update(Graphics g, JComponent c)
ПРИМЕЧАНИЕ: Суперкласс также не потокобезопасен в отрисовке фона, хотя это не проблема для стандартной отрисовки.
- Переопределяет:
-
updateв классеComponentUI - Параметры:
-
g- контекстGraphicsдля рисования -
c- рисуемый компонент; этот аргумент часто игнорируется, но может использоваться, если объект пользовательского интерфейса является бессостоятельным и используется несколькими компонентами - См. также:
paint
public final void paint(Graphics g, JComponent c)
- Переопределяет:
-
paintв классеComponentUI - Параметры:
-
g- контекст графики -
c- компонент редактора - См. также:
getPreferredSize
public Dimension getPreferredSize(JComponent c)
- Overrides:
-
getPreferredSizeв классеComponentUI - Parameters:
-
c- компонент редактора - Returns:
- размер
- See Also:
getMinimumSize
public Dimension getMinimumSize(JComponent c)
- Overrides:
-
getMinimumSizeв классеComponentUI - Parameters:
-
c- компонент редактора - Returns:
- размер
- See Also:
getMaximumSize
public Dimension getMaximumSize(JComponent c)
- Overrides:
-
getMaximumSizeв классеComponentUI - Parameters:
-
c- компонент редактора - Returns:
- размер
- See Also:
getVisibleEditorRect
protected Rectangle getVisibleEditorRect()
- Returns:
- прямоугольник, определяющий область корневого представления
modelToView
@Deprecated(since="9") public Rectangle modelToView(JTextComponent tc, int pos) throws BadLocationException
- Specified by:
-
modelToViewв классеTextUI - Parameters:
-
tc- текстовый компонент, для которого установлен этот пользовательский интерфейс -
pos- локальное положение в модели, подлежащее преобразованию >= 0 - Returns:
- координаты в виде прямоугольника, null, если модель не отрисована
- Throws:
-
BadLocationException- если заданное положение не соответствует допустимому положению в связанном документе - See Also:
modelToView
@Deprecated(since="9") public Rectangle modelToView(JTextComponent tc, int pos, Position.Bias bias) throws BadLocationException
- Specified by:
-
modelToViewв классеTextUI - Parameters:
-
tc- текстовый компонент, для которого установлен этот пользовательский интерфейс -
pos- локальное положение в модели, подлежащее преобразованию >= 0 -
bias- смещение для позиции - Returns:
- координаты в виде прямоугольника, null, если модель не отрисована
- Throws:
-
BadLocationException- если заданное положение не соответствует допустимому положению в связанном документе - See Also:
viewToModel
@Deprecated(since="9") public int viewToModel(JTextComponent tc, Point pt)
- Specified by:
-
viewToModelв классеTextUI - Parameters:
-
tc- текстовый компонент, для которого установлен этот пользовательский интерфейс -
pt- положение в представлении, подлежащее преобразованию. Оно должно находиться в той же системе координат, что и события мыши. - Returns:
- смещение от начала документа >= 0, -1, если не отрисовано
- See Also:
viewToModel
@Deprecated(since="9") public int viewToModel(JTextComponent tc, Point pt, Position.Bias[] biasReturn)
- Specified by:
-
viewToModelв классеTextUI - Parameters:
-
tc- текстовый компонент, для которого установлен этот пользовательский интерфейс -
pt- положение в представлении, подлежащее преобразованию. Оно должно находиться в той же системе координат, что и события мыши. -
biasReturn- заполняется этим методом, чтобы указать, находится ли указанная точка ближе к предыдущему или следующему символу в модели - Returns:
- смещение от начала документа >= 0, -1, если у компонента еще нет положительного размера.
- See Also:
getNextVisualPositionFrom
public int getNextVisualPositionFrom(JTextComponent t, int pos, Position.Bias b, int direction, Position.Bias[] biasRet) throws BadLocationException
- Specified by:
-
getNextVisualPositionFromв классеTextUI - Parameters:
-
t- текстовый компонент, для которого установлен этот пользовательский интерфейс -
pos- положение, подлежащее преобразованию >= 0 -
b- смещение для позиции -
direction- направление от текущего положения, которое можно представить как клавиши со стрелками, обычно присутствующие на клавиатуре. Это может быть SwingConstants.WEST, SwingConstants.EAST, SwingConstants.NORTH или SwingConstants.SOUTH -
biasRet- массив, содержащий смещение для возвращаемого положения - Returns:
- положение в модели, которое лучше всего представляет следующее визуальное положение
- Throws:
-
BadLocationException- для неверного положения в модели документа
damageRange
public void damageRange(JTextComponent tc, int p0, int p1)
- Specified by:
-
damageRangeв классеTextUI - Parameters:
-
tc- текстовый компонент, для которого установлен этот пользовательский интерфейс -
p0- начало диапазона >= 0 -
p1- конец диапазона >= p0 - See Also:
damageRange
public void damageRange(JTextComponent t, int p0, int p1, Position.Bias p0Bias, Position.Bias p1Bias)
- Определено в:
-
damageRangeв классеTextUI - Параметры:
-
t- текстовый компонент, для которого установлен данный интерфейс UI -
p0- начало диапазона >= 0 -
p1- конец диапазона >= p0 -
p0Bias- смещение первой позиции символа, в сторону предыдущего или следующего символа -
p1Bias- смещение второй позиции символа, в сторону предыдущего или следующего символа
getEditorKit
public EditorKit getEditorKit(JTextComponent tc)
- Определено в:
-
getEditorKitв классеTextUI - Параметры:
-
tc- текстовый компонент, для которого установлен данный интерфейс UI - Возвращает:
- редакторские возможности
- См. также:
getRootView
public View getRootView(JTextComponent tc)
Предупреждение: Иерархия представлений может быть пройдена от корневого представления, и могут быть выполнены и другие действия. Действия, выполняемые таким образом, не могут быть защищены, как простые вызовы методов через TextUI. Поэтому правильная работа в присутствии конкурентности должна быть организована любой логикой, которая вызывает этот метод!
- Определено в:
-
getRootViewв классеTextUI - Параметры:
-
tc- текстовый компонент, для которого установлен данный интерфейс UI - Возвращает:
- представление
- См. также:
getToolTipText
public String getToolTipText(JTextComponent t, Point pt)
- Переопределяет:
-
getToolTipTextв классеTextUI - Параметры:
-
t- текстовый компонент, для которого установлен данный интерфейс UI -
pt- точка, определяющая расположение, для которого требуется подсказка - Возвращает:
- строку, содержащую подсказку
- С момента:
- 1.4
- См. также:
create
public View create(Element elem)
- Определено в:
-
createв интерфейсеViewFactory - Параметры:
-
elem- элемент - Возвращает:
- представление
- См. также:
create
public View create(Element elem, int p0, int p1)
- Параметры:
-
elem- элемент -
p0- начальный смещение >= 0 -
p1- конечный смещение >= p0 - Возвращает:
- представление
© 1993, 2023, 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/21/docs/api/java.desktop/javax/swing/plaf/basic/BasicTextUI.html
TextUI.modelToView2D(JTextComponent, int, Position.Bias)