Spec-Zone.ru › OpenJDK 21

Класс AbstractDocument

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

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

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

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

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

Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, использующими одну и ту же версию Swing. Начиная с версии 1.4, поддержка долгосрочного хранения всех JavaBeans была добавлена в пакет java.beans. См. 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
Имя элементов, используемых для хранения разделов (строк/абзацев).

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

StreamDescriptionProperty, 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.

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

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

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

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(java.util.Dictionary<java.lang.Object, java.lang.Object>)

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)
Возвращает массив всех объектов, в данный момент зарегистрированных как FooListener для этого документа. FooListener регистрируются с помощью метода addFooListener.

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

DocumentListener[] mls = (DocumentListener[])(d.getListeners(DocumentListener.class));
Если такие слушатели не существуют, этот метод возвращает пустой массив.
Тип параметров:
T - тип слушателя
Параметры:
listenerType - тип запрашиваемых слушателей
Возвращает:
массив всех объектов, зарегистрированных как FooListener для этого компонента, или пустой массив, если такие слушатели не были добавлены
Исключения:
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(javax.swing.text.DocumentFilter)

render

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

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

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

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

Specified by:
render in interface Document
Parameters:
r - the renderer to execute

getLength

public int getLength()
Возвращает длину данных. Это количество символов содержимого, представляющих данные пользователя.
Specified by:
getLength in interface Document
Returns:
the length >= 0
See Also:
  • Document.getLength()

addDocumentListener

public void addDocumentListener(DocumentListener listener)
Добавляет слушателя изменений документа для уведомления о любых изменениях.
Specified by:
addDocumentListener in interface Document
Parameters:
listener - the DocumentListener to add
See Also:
  • Document.addDocumentListener(javax.swing.event.DocumentListener)

removeDocumentListener

public void removeDocumentListener(DocumentListener listener)
Удаляет слушателя изменений документа.
Specified by:
removeDocumentListener in interface Document
Parameters:
listener - the DocumentListener to remove
See Also:
  • Document.removeDocumentListener(javax.swing.event.DocumentListener)

getDocumentListeners

public DocumentListener[] getDocumentListeners()
Возвращает массив всех зарегистрированных слушателей изменений документа.
Returns:
все слушатели изменений документа или пустой массив, если слушатели не зарегистрированы
Since:
1.4
See Also:
  • addDocumentListener(javax.swing.event.DocumentListener)
  • removeDocumentListener(javax.swing.event.DocumentListener)

addUndoableEditListener

public void addUndoableEditListener(UndoableEditListener listener)
Добавляет слушателя отмены для уведомления о любых изменениях. Операции отмены/повторного выполнения, выполненные над документом, приведут к тому, что соответствующее событие DocumentEvent будет генерироваться, чтобы сохранить соответствие представления(ий) с моделью.
Specified by:
addUndoableEditListener in interface Document
Parameters:
listener - the UndoableEditListener to add
See Also:
  • Document.addUndoableEditListener(javax.swing.event.UndoableEditListener)

removeUndoableEditListener

public void removeUndoableEditListener(UndoableEditListener listener)
Удаляет слушателя отмены.
Specified by:
removeUndoableEditListener in interface Document
Parameters:
listener - the UndoableEditListener to remove
See Also:
  • Document.removeDocumentListener(javax.swing.event.DocumentListener)

getUndoableEditListeners

public UndoableEditListener[] getUndoableEditListeners()
Возвращает массив всех зарегистрированных слушателей отмены изменений.
Returns:
все слушатели отмены изменений или пустой массив, если слушатели не зарегистрированы
Since:
1.4
See Also:
  • addUndoableEditListener(javax.swing.event.UndoableEditListener)
  • removeUndoableEditListener(javax.swing.event.UndoableEditListener)

getProperty

public final Object getProperty(Object key)
Удобный метод для поиска значения свойства. Эквивалентно:
 getDocumentProperties().get(key);
 
Specified by:
getProperty in interface Document
Parameters:
key - the non-null property key
Returns:
значение свойства или null
See Also:
  • getDocumentProperties()

putProperty

public final void putProperty(Object key, Object value)
Удобный метод для хранения значения свойства. Эквивалентно:
 getDocumentProperties().put(key, value);
 
Если value равно null, этот метод удалит свойство.
Specified by:
putProperty in interface Document
Parameters:
key - the non-null key
value - the property value
See Also:
  • getDocumentProperties()

remove

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

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

Specified by:
remove in interface Document
Parameters:
offs - the starting offset >= 0
len - the number of characters to remove >= 0
Throws:
BadLocationException - the given remove position is not a valid position within the document
See Also:
  • Document.remove(int, int)

replace

public void replace(int offset, int length, String text, AttributeSet attrs) throws BadLocationException
Удаляет область текста с offset по offset + length, и заменяет её на text. Реализация может обрабатывать это как две отдельные операции: удаление, за которым следует вставка, или как атомарную операцию замены.
Parameters:
offset - index of child element
length - length of text to delete, may be 0 indicating don't delete anything
text - text to insert, null indicates no text to insert
attrs - AttributeSet indicating attributes of inserted text, null is legal, and typically treated as an empty attributeset, but exact interpretation is left to the subclass
Throws:
BadLocationException - the given position is not a valid position within the document
Since:
1.4

insertString

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

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

Specified by:
insertString in interface Document
Parameters:
offs - the starting offset >= 0
str - the string to insert; does nothing with null/empty strings
a - the attributes for the inserted content
Throws:
BadLocationException - the given insert position is not a valid position within the document
See Also:
  • Document.insertString(int, java.lang.String, javax.swing.text.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 bidi.
Возвращает:
корневой элемент двунаправленной структуры для этого документа

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)
Обновляет любую структуру документа в результате удаления текста. Этот метод вызывается до фактического удаления текста из содержимого. Это произойдет в рамках записи блокировки. Если подкласс этого класса переопределяет этот метод, он должен также делегировать суперклассу.
Параметры:
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, выполнить несколько операций, а затем освободить блокировку.

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

Исключения:
IllegalStateException - выбрасывается при незаконной попытке получения блокировки. Если документ реализован правильно, это может произойти только в том случае, если слушатель документа попытается изменить документ. Эта ситуация нарушает модель событий Bean, где порядок доставки не гарантируется, и все слушатели должны быть уведомлены перед дальнейшими изменениями.

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()

© 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/text/AbstractDocument.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API