Spec-Zone.ru › OpenJDK 27

Класс AbstractDocument

java.lang.Object
javax.swing.text.AbstractDocument
Все реализуемые интерфейсы:
Serializable, Document
Прямые известные подклассы:
DefaultStyledDocument, PlainDocument
public abstract class AbstractDocument extends Object implements Document, Serializable
Реализация интерфейса документа, служащая основой для реализации различных видов документов. На этом уровне практически отсутствуют политики, поэтому пользоваться классом становится значительно сложнее.

Этот класс реализует механизм блокировки документа. Он допускает нескольких читателей или одного писателя; писатели должны дождаться уведомления всех наблюдателей документа о предыдущем изменении, прежде чем начинать новое изменение документа. Блокировка чтения захватывается и освобождается с помощью метода render. Блокировка записи захватывается методами, изменяющими документ, и удерживается на протяжении всего вызова метода. Уведомление выполняется в потоке, вызвавшем изменение, и на время уведомления этот поток получает полный доступ к чтению документа, однако другие читатели не допускаются до завершения уведомления. Уведомление представляет собой событие beans, которое не допускает дальнейших изменений, пока не будут уведомлены все слушатели.

Любые модели, унаследованные от этого класса и используемые вместе с текстовым компонентом, реализация внешнего вида которого является производной от BasicTextUI, можно безопасно обновлять асинхронно, поскольку BasicTextUI сериализует весь доступ к иерархии View, если документ имеет тип AbstractDocument. Блокировка предполагает, что независимый поток будет обращаться к иерархии View только из методов DocumentListener и что одновременно будет активен только один поток событий.

Если требуется поддержка параллелизма, следует учитывать следующие дополнительные условия. Путь выполнения кода любой реализации DocumentListener и любой реализации UndoListener должен быть потокобезопасным и не должен обращаться к блокировке компонента, если требуется избежать взаимных блокировок. Методы repaint и revalidate класса JComponent являются потокобезопасными.

AbstractDocument моделирует неявный разрыв в конце документа. Помимо прочего, это позволяет разместить каретку после последнего символа. В результате getLength возвращает значение на единицу меньше длины Content. Если вы создаёте собственный Content, обязательно инициализируйте его дополнительным символом. Примеры этого см. в StringContent и GapContent. Ещё одно следствие заключается в том, что элементы, моделирующие неявный конечный символ, будут иметь endOffset == (getLength() + 1). Например, в DefaultStyledDocument это getParagraphElement(getLength()).getEndOffset() == getLength() + 1 .

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

Краткое описание вложенных классов

Модификатор и тип Класс Описание
class  AbstractDocument.AbstractElement
Реализует абстрактную часть элемента.
static interface  AbstractDocument.AttributeContext
Интерфейс, позволяющий реализациям MutableAttributeSet использовать подключаемые методы сжатия атрибутов.
class  AbstractDocument.BranchElement
Реализует составной элемент, содержащий другие элементы.
static interface  AbstractDocument.Content
Интерфейс для описания последовательности символьного содержимого, которое можно редактировать.
class  AbstractDocument.DefaultDocumentEvent
Сохраняет изменения документа по мере его изменения.
static class  AbstractDocument.ElementEdit
Реализация ElementChange, которую можно добавить в событие документа.
class  AbstractDocument.LeafElement
Реализует элемент, непосредственно представляющий содержимое некоторого вида.

Краткое описание полей

Модификатор и тип Поле Описание
protected static final String BAD_LOCATION
Сообщение об ошибке, указывающее на недопустимую позицию.
static final String BidiElementName
Имя элементов, используемых для хранения однонаправленного фрагмента
static final String ContentElementName
Имя элементов, используемых для представления содержимого
static final String ElementNameAttribute
Имя атрибута, используемого для указания имён элементов.
protected EventListenerList listenerList
Список слушателей событий документа.
static final String ParagraphElementName
Имя элементов, используемых для представления абзацев
static final String SectionElementName
Имя элементов, используемых для хранения разделов (строк/абзацев).

Поля, объявленные в интерфейсе Document

StreamDescriptionProperty, TitleProperty
Модификатор и тип Поле Описание
static final String StreamDescriptionProperty
Имя свойства, содержащего описание потока, использованного для инициализации документа.
static final String TitleProperty
Имя свойства, содержащего заголовок документа, если он есть.

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

AbstractDocument(AbstractDocument.Content data)
AbstractDocument(AbstractDocument.Content data, AbstractDocument.AttributeContext context)
Модификатор Конструктор Описание
protected
Создаёт новый AbstractDocument, использующий указанный механизм хранения содержимого.
protected
Создаёт новый AbstractDocument, использующий указанный механизм хранения содержимого.

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

Модификатор и тип Метод Описание
void addDocumentListener(DocumentListener listener)
Добавляет слушателя документа для уведомления о любых изменениях.
void addUndoableEditListener(UndoableEditListener listener)
Добавляет слушателя отмены действий для уведомления о любых изменениях.
protected Element createBranchElement(Element parent, AttributeSet a)
Создаёт ветвевой элемент документа, который может содержать другие элементы.
protected Element createLeafElement(Element parent, AttributeSet a, int p0, int p1)
Создаёт листовой элемент документа.
Position createPosition(int offs)
Возвращает позицию, которая будет отслеживать изменения документа.
void dump(PrintStream out)
Выводит диагностические данные.
protected void fireChangedUpdate(DocumentEvent e)
Уведомляет всех слушателей, зарегистрировавших интерес к уведомлениям о событиях этого типа.
protected void fireInsertUpdate(DocumentEvent e)
Уведомляет всех слушателей, зарегистрировавших интерес к уведомлениям о событиях этого типа.
protected void fireRemoveUpdate(DocumentEvent e)
Уведомляет всех слушателей, зарегистрировавших интерес к уведомлениям о событиях этого типа.
protected void fireUndoableEditUpdate(UndoableEditEvent e)
Уведомляет всех слушателей, зарегистрировавших интерес к уведомлениям о событиях этого типа.
int getAsynchronousLoadPriority()
Возвращает приоритет асинхронной загрузки.
protected final AbstractDocument.AttributeContext getAttributeContext()
Возвращает контекст для управления атрибутами.
Element getBidiRootElement()
Возвращает корневой элемент двунаправленной структуры этого документа.
protected final AbstractDocument.Content getContent()
Возвращает содержимое документа.
protected final Thread getCurrentWriter()
Возвращает текущий поток записи, если он существует.
abstract Element getDefaultRootElement()
Возвращает корневой элемент, на основе которого следует строить представления, если не предоставлен другой механизм назначения представлений структурам элементов.
DocumentFilter getDocumentFilter()
Возвращает DocumentFilter, отвечающий за фильтрацию вставки/удаления.
DocumentListener[] getDocumentListeners()
Возвращает массив всех слушателей документа, зарегистрированных для этого документа.
Dictionary<Object,Object> getDocumentProperties()
Обеспечивает управление набором свойств.
final Position getEndPosition()
Возвращает позицию, соответствующую концу документа.
int getLength()
Возвращает длину данных.
<T extends EventListener>
T[]
getListeners(Class<T> listenerType)
Возвращает массив всех объектов, зарегистрированных в данный момент в качестве FooListener в этом документе.
abstract Element getParagraphElement(int pos)
Возвращает элемент абзаца, содержащий указанную позицию.
final Object getProperty(Object key)
Вспомогательный метод для получения значения свойства.
Element[] getRootElements()
Возвращает все определённые корневые элементы.
final Position getStartPosition()
Возвращает позицию, соответствующую началу документа.
String getText(int offset, int length)
Возвращает последовательность текста из документа.
void getText(int offset, int length, Segment txt)
Возвращает текст, содержащийся в указанной части документа.
UndoableEditListener[] getUndoableEditListeners()
Возвращает массив всех слушателей отменяемых изменений, зарегистрированных для этого документа.
void insertString(int offs, String str, AttributeSet a)
Вставляет содержимое в документ.
protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
Обновляет структуру документа в результате вставки текста.
protected void postRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
Обновляет структуру документа в результате удаления текста.
final void putProperty(Object key, Object value)
Вспомогательный метод для сохранения значения свойства.
final void readLock()
Захватывает блокировку для начала чтения состояния документа.
final void readUnlock()
Снимает блокировку чтения.
void remove(int offs, int len)
Удаляет содержимое из документа.
void removeDocumentListener(DocumentListener listener)
Удаляет слушателя документа.
void removeUndoableEditListener(UndoableEditListener listener)
Удаляет слушателя отмены действий.
protected void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
Обновляет структуру документа в результате удаления текста.
void render(Runnable r)
Позволяет безопасно отображать модель при наличии параллелизма, если модель поддерживает асинхронное обновление.
void replace(int offset, int length, String text, AttributeSet attrs)
Удаляет область текста от offset до offset + length и заменяет её на text.
void setAsynchronousLoadPriority(int p)
Задаёт приоритет асинхронной загрузки.
void setDocumentFilter(DocumentFilter filter)
Задаёт DocumentFilter.
void setDocumentProperties(Dictionary<Object,Object> x)
Заменяет словарь свойств этого документа.
protected final void writeLock()
Захватывает блокировку для начала изменения защищаемого ею документа.
protected final void writeUnlock()
Освобождает блокировку записи, ранее полученную с помощью writeLock.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Приостанавливает текущий поток до его пробуждения, обычно посредством вызова notify или interrupt.
final void wait(long timeoutMillis)
Приостанавливает текущий поток до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает текущий поток до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание полей

listenerList

protected EventListenerList listenerList
Список прослушивателей событий документа.

BAD_LOCATION

protected static final String BAD_LOCATION
Сообщение об ошибке, указывающее на недопустимое местоположение.
См. также:
  • Значения константных полей

ParagraphElementName

public static final String ParagraphElementName
Имя элементов, используемых для представления абзацев
См. также:
  • Значения константных полей

ContentElementName

public static final String ContentElementName
Имя элементов, используемых для представления содержимого
См. также:
  • Значения константных полей

SectionElementName

public static final String SectionElementName
Имя элементов, используемых для хранения разделов (строк/абзацев).
См. также:
  • Значения константных полей

BidiElementName

public static final String BidiElementName
Имя элементов, используемых для хранения однонаправленного фрагмента текста
См. также:
  • Значения константных полей

ElementNameAttribute

public static final String ElementNameAttribute
Имя атрибута, используемого для задания имен элементов.
См. также:
  • Значения константных полей

Подробное описание конструкторов

AbstractDocument

protected AbstractDocument(AbstractDocument.Content data)
Создает новый AbstractDocument, использующий указанный механизм хранения содержимого.
Параметры:
data — содержимое

AbstractDocument

protected AbstractDocument(AbstractDocument.Content data, AbstractDocument.AttributeContext context)
Создает новый AbstractDocument, использующий указанный механизм хранения содержимого.
Параметры:
data — содержимое
context — контекст атрибутов

Подробное описание методов

getDocumentProperties

public Dictionary<Object,Object> getDocumentProperties()
Поддерживает управление набором свойств. Вызывающий код может использовать словарь documentProperties для добавления к документу свойств, действующих на уровне всего документа.
Возвращает:
не-null Dictionary
См. также:
  • setDocumentProperties(Dictionary)

setDocumentProperties

public void setDocumentProperties(Dictionary<Object,Object> x)
Заменяет словарь свойств этого документа.
Параметры:
x — новый словарь
См. также:
  • getDocumentProperties()

fireInsertUpdate

protected void fireInsertUpdate(DocumentEvent e)
Уведомляет всех прослушивателей, зарегистрированных для получения уведомлений о событиях этого типа. Экземпляр события создается отложенно с использованием параметров, переданных методу fire.
Параметры:
e — событие
См. также:
  • EventListenerList

fireChangedUpdate

protected void fireChangedUpdate(DocumentEvent e)
Уведомляет всех прослушивателей, зарегистрированных для получения уведомлений о событиях этого типа. Экземпляр события создается отложенно с использованием параметров, переданных методу fire.
Параметры:
e — событие
См. также:
  • EventListenerList

fireRemoveUpdate

protected void fireRemoveUpdate(DocumentEvent e)
Уведомляет всех прослушивателей, зарегистрированных для получения уведомлений о событиях этого типа. Экземпляр события создается отложенно с использованием параметров, переданных методу fire.
Параметры:
e — событие
См. также:
  • EventListenerList

fireUndoableEditUpdate

protected void fireUndoableEditUpdate(UndoableEditEvent e)
Уведомляет всех прослушивателей, зарегистрированных для получения уведомлений о событиях этого типа. Экземпляр события создается отложенно с использованием параметров, переданных методу fire.
Параметры:
e — событие
См. также:
  • EventListenerList

getListeners

public <T extends EventListener> T[] getListeners(Class<T> listenerType)
Возвращает массив всех объектов, зарегистрированных в данный момент в качестве FooListeners этого документа. Регистрация FooListeners выполняется с помощью метода addFooListener.

В аргументе listenerType можно указать литерал класса, например FooListener.class. Например, запросить у документа d его прослушиватели документа можно следующим образом:

DocumentListener[] mls = (DocumentListener[])(d.getListeners(DocumentListener.class));
Если таких прослушивателей нет, этот метод возвращает пустой массив.
Параметры типа:
T — тип прослушивателя
Параметры:
listenerType — тип запрашиваемых прослушивателей
Возвращает:
массив всех объектов, зарегистрированных в качестве FooListeners этого компонента, или пустой массив, если такие прослушиватели не были добавлены
Вызывает исключение:
ClassCastException — если listenerType не задает класс или интерфейс, реализующий java.util.EventListener
Начиная с:
1.3
См. также:
  • getDocumentListeners()
  • getUndoableEditListeners()

getAsynchronousLoadPriority

public int getAsynchronousLoadPriority()
Возвращает приоритет асинхронной загрузки. Если он меньше нуля, документ не следует загружать асинхронно.
Возвращает:
приоритет асинхронной загрузки или -1, если документ не следует загружать асинхронно

setAsynchronousLoadPriority

public void setAsynchronousLoadPriority(int p)
Задает приоритет асинхронной загрузки.
Параметры:
p — новый приоритет асинхронной загрузки; значение меньше нуля означает, что документ не следует загружать асинхронно

setDocumentFilter

public void setDocumentFilter(DocumentFilter filter)
Задает DocumentFilter. DocumentFilter передается insert и remove, чтобы условно разрешить вставку/удаление текста. Значение null означает, что фильтрация выполняться не будет.
Параметры:
filter — DocumentFilter, используемый для ограничения текста
Начиная с:
1.4
См. также:
  • getDocumentFilter()

getDocumentFilter

public DocumentFilter getDocumentFilter()
Возвращает DocumentFilter, отвечающий за фильтрацию вставки/удаления. Возвращаемое значение null означает, что фильтрация выполняться не будет.
Возвращает:
DocumentFilter
Начиная с:
1.4
См. также:
  • setDocumentFilter(DocumentFilter)

render

public void render(Runnable r)
Этот метод позволяет безопасно отображать модель при наличии параллельного выполнения, если модель поддерживает асинхронное обновление. Переданный объект Runnable будет выполнен таким образом, чтобы он мог безопасно читать модель, пока во время его выполнения не происходит никаких изменений. Сам объект Runnable не должен вносить никаких изменений.

Реализация на время выполнения объекта Runnable захватывает блокировку чтения. Одновременно могут выполняться несколько объектов Runnable, а все операции записи будут блокироваться, пока активны объекты Runnable отображения. Если объект Runnable выбрасывает исключение, его блокировка будет безопасно снята. Защита от объекта Runnable, который никогда не завершает работу, не предусмотрена: в таком случае документ фактически останется заблокированным на все время его существования.

Если переданный объект Runnable попытается внести какие-либо изменения в этой реализации, произойдет взаимная блокировка. Отслеживание отдельных потоков отображения для обнаружения этой ситуации не выполняется, однако подкласс может понести дополнительные расходы на их отслеживание и выброс исключения.

Этот метод является потокобезопасным, хотя большинство методов Swing таковыми не являются. Дополнительные сведения см. в разделе Параллельное выполнение в Swing.

Определено в:
render в интерфейсе Document
Параметры:
r — выполняемый объект отображения

getLength

public int getLength()
Возвращает длину данных. Это количество символов содержимого, представляющего данные пользователя.
Определено в:
getLength в интерфейсе Document
Возвращает:
длина >= 0
См. также:
  • Document.getLength()

addDocumentListener

public void addDocumentListener(DocumentListener listener)
Добавляет прослушиватель документа для уведомления обо всех изменениях.
Определено в:
addDocumentListener в интерфейсе Document
Параметры:
listener — добавляемый DocumentListener
См. также:
  • Document.addDocumentListener(DocumentListener)

removeDocumentListener

public void removeDocumentListener(DocumentListener listener)
Удаляет прослушиватель документа.
Определено в:
removeDocumentListener в интерфейсе Document
Параметры:
listener — удаляемый DocumentListener
См. также:
  • Document.removeDocumentListener(DocumentListener)

getDocumentListeners

public DocumentListener[] getDocumentListeners()
Возвращает массив всех прослушивателей документа, зарегистрированных в этом документе.
Возвращает:
все DocumentListeners этого документа или пустой массив, если в данный момент не зарегистрировано ни одного прослушивателя документа
Начиная с:
1.4
См. также:
  • addDocumentListener(DocumentListener)
  • removeDocumentListener(DocumentListener)

addUndoableEditListener

public void addUndoableEditListener(UndoableEditListener listener)
Добавляет прослушиватель отменяемых изменений для уведомления обо всех изменениях. Операции отмены/повтора, выполняемые над UndoableEdit, вызывают отправку соответствующего DocumentEvent, чтобы синхронизировать представления с моделью.
Определено в:
addUndoableEditListener в интерфейсе Document
Параметры:
listener — добавляемый UndoableEditListener
См. также:
  • Document.addUndoableEditListener(UndoableEditListener)

removeUndoableEditListener

public void removeUndoableEditListener(UndoableEditListener listener)
Удаляет прослушиватель отменяемых изменений.
Определено в:
removeUndoableEditListener в интерфейсе Document
Параметры:
listener — удаляемый UndoableEditListener
См. также:
  • Document.removeDocumentListener(DocumentListener)

getUndoableEditListeners

public UndoableEditListener[] getUndoableEditListeners()
Возвращает массив всех прослушивателей отменяемых изменений, зарегистрированных в этом документе.
Возвращает:
все UndoableEditListeners этого документа или пустой массив, если в данный момент не зарегистрировано ни одного прослушивателя отменяемых изменений
Начиная с:
1.4
См. также:
  • addUndoableEditListener(UndoableEditListener)
  • removeUndoableEditListener(UndoableEditListener)

getProperty

public final Object getProperty(Object key)
Вспомогательный метод для получения значения свойства. Он эквивалентен следующему:
getDocumentProperties().get(key);
Определено в:
getProperty в интерфейсе Document
Параметры:
key — ключ свойства, не являющийся null
Возвращает:
значение этого свойства или null
См. также:
  • getDocumentProperties()

putProperty

public final void putProperty(Object key, Object value)
Вспомогательный метод для сохранения значения свойства. Он эквивалентен следующему:
getDocumentProperties().put(key, value);
Если value — это null, данный метод удалит свойство.
Определено в:
putProperty в интерфейсе Document
Параметры:
key — ключ, не являющийся null
value — значение свойства
См. также:
  • getDocumentProperties()

remove

public void remove(int offs, int len) throws BadLocationException
Удаляет часть содержимого из документа. При удалении содержимого на время фактического выполнения изменений устанавливается блокировка записи. Наблюдатели уведомляются об изменении в потоке, вызвавшем этот метод.

Этот метод является потокобезопасным, хотя большинство методов Swing таковыми не являются. Дополнительные сведения см. в разделе Параллельное выполнение в Swing.

Определено в:
remove в интерфейсе Document
Параметры:
offs — начальное смещение >= 0
len — количество удаляемых символов >= 0
Вызывает исключение:
BadLocationException — указанная позиция удаления не является допустимой позицией в документе
См. также:
  • Document.remove(int, int)

replace

public void replace(int offset, int length, String text, AttributeSet attrs) throws BadLocationException
Удаляет область текста от offset до offset + length и заменяет ее на text. Реализация определяет, как именно это выполняется: некоторые реализации могут рассматривать эту операцию как две отдельные операции — удаление и последующую вставку, другие могут выполнять замену как одну атомарную операцию.
Параметры:
offset — индекс дочернего элемента
length — длина удаляемого текста; значение 0 означает, что удалять ничего не нужно
text — вставляемый текст; null означает, что текст для вставки отсутствует
attrs — AttributeSet, задающий атрибуты вставляемого текста; допустимо значение null, которое обычно рассматривается как пустой набор атрибутов, однако точная интерпретация определяется подклассом
Вызывает исключение:
BadLocationException — указанная позиция не является допустимой позицией в документе
Начиная с:
1.4

insertString

public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
Вставляет содержимое в документ. При вставке содержимого на время фактического выполнения изменений устанавливается блокировка записи; после этого наблюдатели уведомляются в потоке, захватившем блокировку записи.

Этот метод является потокобезопасным, хотя большинство методов Swing таковыми не являются. Дополнительные сведения см. в разделе Параллельное выполнение в Swing.

Определено в:
insertString в интерфейсе Document
Параметры:
offs — начальное смещение >= 0
str — вставляемая строка; для null или пустой строки ничего не происходит
a — атрибуты вставляемого содержимого
Вызывает исключение:
BadLocationException — указанная позиция вставки не является допустимой позицией в документе
См. также:
  • Document.insertString(int, String, AttributeSet)

getText

public String getText(int offset, int length) throws BadLocationException
Получает последовательность текста из документа.
Определено в:
getText в интерфейсе Document
Параметры:
offset — начальное смещение >= 0
length — количество извлекаемых символов >= 0
Возвращает:
текст
Вызывает исключение:
BadLocationException — указанный диапазон включает позицию, не являющуюся допустимой позицией в документе
См. также:
  • Document.getText(int, int)

getText

public void getText(int offset, int length, Segment txt) throws BadLocationException
Получает текст из указанной части документа.

Если свойство partialReturn параметра txt имеет значение false, данные, возвращаемые в Segment, будут иметь всю запрошенную длину и могут быть как копией, так и оригиналом — это зависит от способа хранения данных. Если свойство partialReturn имеет значение true, возвращается только то количество текста, которое можно получить без создания копии. Частичный возврат повышает производительность при сканировании больших частей документа. Ниже приведен пример использования частичного возврата для доступа ко всему документу:

  int nleft = doc.getDocumentLength();
  Segment text = new Segment();
  int offs = 0;
  text.setPartialReturn(true);
  while (nleft > 0) {
      doc.getText(offs, nleft, text);
      // do something with text
      nleft -= text.count;
      offs += text.count;
  }
Определено в:
getText в интерфейсе Document
Параметры:
offset — начальное смещение >= 0
length — количество извлекаемых символов >= 0
txt — объект Segment, в который будет помещен текст
Вызывает исключение:
BadLocationException — указанный диапазон включает позицию, не являющуюся допустимой позицией в документе

createPosition

public Position createPosition(int offs) throws BadLocationException
Возвращает позицию, которая будет отслеживать изменения при изменении документа.

Этот метод является потокобезопасным, хотя большинство методов Swing таковыми не являются. Дополнительные сведения см. в разделе Параллельное выполнение в Swing.

Определено в:
createPosition в интерфейсе Document
Параметры:
offs — позиция в модели >= 0
Возвращает:
позиция
Вызывает исключение:
BadLocationException — если указанная позиция не соответствует допустимому местоположению в связанном документе
См. также:
  • Document.createPosition(int)

getStartPosition

public final Position getStartPosition()
Возвращает позицию, соответствующую началу документа. Можно рассчитывать, что возвращенная позиция будет отслеживать изменения и останется в начале документа.
Определено в:
getStartPosition в интерфейсе Document
Возвращает:
позиция

getEndPosition

public final Position getEndPosition()
Возвращает позицию, соответствующую концу документа. Можно рассчитывать, что возвращенная позиция будет отслеживать изменения и останется в конце документа.
Определено в:
getEndPosition в интерфейсе Document
Возвращает:
позиция

getRootElements

public Element[] getRootElements()
Получает все определенные корневые элементы. Обычно корневой элемент только один, поэтому реализация по умолчанию возвращает корневой элемент по умолчанию.
Определено в:
getRootElements в интерфейсе Document
Возвращает:
корневой элемент

getDefaultRootElement

public abstract Element getDefaultRootElement()
Возвращает корневой элемент, на котором должны основываться представления, если не предусмотрен другой механизм сопоставления представлений со структурами элементов.
Определено в:
getDefaultRootElement в интерфейсе Document
Возвращает:
корневой элемент
См. также:
  • Document.getDefaultRootElement()

getBidiRootElement

public Element getBidiRootElement()
Возвращает корневой элемент двунаправленной структуры этого документа. Его дочерние элементы представляют последовательности символов с заданным уровнем двунаправленности Unicode.
Возвращает:
корневой элемент двунаправленной структуры этого документа

getParagraphElement

public abstract Element getParagraphElement(int pos)
Получает элемент абзаца, содержащий указанную позицию. Подклассы должны самостоятельно определять, что именно считается абзацем. Однако следует учитывать, что абзац должен быть как минимум единицей текста, к которой применяется двунаправленный алгоритм Unicode.
Параметры:
pos — начальное смещение >= 0
Возвращает:
элемент

getAttributeContext

protected final AbstractDocument.AttributeContext getAttributeContext()
Получает контекст для управления атрибутами. Этот метод фактически определяет стратегию сжатия информации AttributeSet.
Возвращает:
контекст

insertUpdate

protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
Обновляет структуру документа в результате вставки текста. Этот метод выполняется при установленной блокировке записи. Если подкласс этого класса переопределяет данный метод, он также должен вызывать реализацию суперкласса.
Параметры:
chng — описание изменения
attr — атрибуты изменения

removeUpdate

protected void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
Обновляет структуру документа в результате удаления текста. Этот метод вызывается до фактического удаления текста из Content. Он выполняется при установленной блокировке записи. Если подкласс этого класса переопределяет данный метод, он также должен вызывать реализацию суперкласса.
Параметры:
chng — описание изменения

postRemoveUpdate

protected void postRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
Обновляет структуру документа вследствие удаления текста. Этот метод вызывается после удаления текста из содержимого. Это происходит в пределах блокировки записи. Если подкласс этого класса переопределяет данный метод, он также должен вызывать реализацию суперкласса.
Параметры:
chng — описание изменения

dump

public void dump(PrintStream out)
Выводит диагностическую информацию.
Параметры:
out — выходной поток

getContent

protected final AbstractDocument.Content getContent()
Возвращает содержимое документа.
Возвращает:
содержимое

createLeafElement

protected Element createLeafElement(Element parent, AttributeSet a, int p0, int p1)
Создает листовой элемент документа. Точка расширения, с помощью которой создаются элементы, представляющие структуру документа. Поскольку в этой реализации структура и содержимое разделены, элементы автоматически расширяются при добавлении содержимого, вслед за чем разделяются существующие элементы. Документ сам определяет способ создания элементов, что обеспечивает гибкость в выборе их типов.
Параметры:
parent — родительский элемент
a — атрибуты элемента
p0 — начало диапазона >= 0
p1 — конец диапазона >= p0
Возвращает:
новый элемент

createBranchElement

protected Element createBranchElement(Element parent, AttributeSet a)
Создает ветвевой элемент документа, который может содержать другие элементы.
Параметры:
parent — родительский элемент
a — атрибуты
Возвращает:
элемент

getCurrentWriter

protected final Thread getCurrentWriter()
Возвращает текущий поток записи, если он есть. Это можно использовать, чтобы определить, вызывается ли метод в рамках уже выполняемого изменения или необходимо получить блокировку и начать новую транзакцию.
Возвращает:
поток, активно изменяющий документ, или null, если в данный момент изменения не выполняются

writeLock

protected final void writeLock()
Получает блокировку для начала изменения документа, защищаемого этой блокировкой. Для получения блокировки не должно выполняться запись, уведомление об изменениях или чтение. Кроме того, потоку разрешено получать более одной writeLock, если он не пытается получить дополнительные writeLock во время уведомления документа. Попытка получить writeLock во время уведомления DocumentListener приведет к IllegalStateException. Возможность получать более одной writeLock на поток позволяет подклассам получить блокировку записи, выполнить несколько операций, а затем освободить блокировку.

Вызовы writeLock должны быть уравновешены вызовами writeUnlock, иначе Document останется заблокированным, и чтение или запись станут невозможны.

Выбрасывает:
IllegalStateException — выбрасывается при недопустимой попытке получить блокировку. Если документ реализован правильно, это может произойти только в случае, когда слушатель документа пытается изменить документ. Такая ситуация нарушает модель событий JavaBeans, в которой порядок доставки не гарантируется и все слушатели должны получить уведомление до разрешения дальнейших изменений.

writeUnlock

protected final void writeUnlock()
Освобождает блокировку записи, ранее полученную с помощью writeLock. После уменьшения счетчика блокировок, если не осталось активных блокировок, доступ к документу будет разрешен новому потоку записи или потокам чтения.
См. также:
  • writeLock()

readLock

public final void readLock()
Получает блокировку для чтения некоторого состояния документа. Одновременно может работать несколько потоков чтения. Запись блокирует чтение, пока не завершится уведомление слушателей об изменении. Этот метод следует использовать с особой осторожностью, чтобы не допустить непреднамеренного нарушения целостности документа. Каждый вызов должен быть уравновешен вызовом readUnlock.
См. также:
  • readUnlock()

readUnlock

public final void readUnlock()
Снимает блокировку чтения. Это означает, что один из потоков чтения завершил работу. Если других потоков чтения не осталось, запись может возобновиться. Этот вызов должен быть уравновешен вызовом readLock и выполняться в блоке finally, чтобы гарантировать соблюдение баланса. Ниже приведен пример.
    readLock();
    try {
        // do something
    } finally {
        readUnlock();
    }
См. также:
  • readLock()

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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