Класс 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, если документ имеет тип 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 String | BAD_LOCATION | Сообщение об ошибке, указывающее на неправильное расположение. |
static String | BidiElementName | Имя элементов, используемых для хранения однонаправленной строки. |
static String | ContentElementName | Имя элементов, используемых для представления содержимого. |
static String | ElementNameAttribute | Имя атрибута, используемого для указания имён элементов. |
protected EventListenerList | listenerList | Список обработчиков событий для документа. |
static String | ParagraphElementName | Имя элементов, используемых для представления абзацев. |
static String | SectionElementName | Имя элементов, используемых для хранения разделов (строк/абзацев). |
Поля, унаследованные от интерфейса javax.swing.text.Document
StreamDescriptionProperty, TitleProperty Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | AbstractDocument(AbstractDocument.Content data) | Создает новый |
protected | AbstractDocument(AbstractDocument.Content data,
AbstractDocument.AttributeContext context) | Создает новый |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
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 AbstractDocument.AttributeContext | getAttributeContext() | Извлекает контекст для управления атрибутами. |
Element | getBidiRootElement() | Возвращает корневой элемент двунаправленной структуры для этого документа. |
protected AbstractDocument.Content | getContent() | Получает содержимое документа. |
protected Thread | getCurrentWriter() | Извлекает текущую нить записи, если она есть. |
abstract Element | getDefaultRootElement() | Возвращает корневой элемент, на основе которого должны базироваться представления, если не предусмотрен иной механизм назначения представлений элементам структуры. |
DocumentFilter | getDocumentFilter() | Возвращает |
DocumentListener[] | getDocumentListeners() | Возвращает массив всех обработчиков событий документа, зарегистрированных в этом документе. |
Dictionary<Object,Object> | getDocumentProperties() | Поддерживает управление набором свойств. |
Position | getEndPosition() | Возвращает позицию, представляющую конец документа. |
int | getLength() | Возвращает длину данных. |
<T extends EventListener> | getListeners(Class<T> listenerType) | Возвращает массив всех объектов, в данный момент зарегистрированных как |
abstract Element | getParagraphElement(int pos) | Получает элемент абзаца, содержащий заданную позицию. |
Object | getProperty(Object key) | Удобный метод для поиска значения свойства. |
Element[] | getRootElements() | Получает все определённые корневые элементы. |
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) | Обновляет любую структуру документа в результате удаления текста. |
void | putProperty(Object key,
Object value) | Удобный метод для хранения значения свойства. |
void | readLock() | Получает блокировку для начала чтения некоторого состояния из документа. |
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) | Удаляет область текста от |
void | setAsynchronousLoadPriority(int p) | Устанавливает приоритет асинхронной загрузки. |
void | setDocumentFilter(DocumentFilter filter) | Устанавливает |
void | setDocumentProperties(Dictionary<Object,Object> x) | Заменяет словарь свойств документа для этого документа. |
protected void | writeLock() | Получает блокировку для начала изменения документа, который защищает эта блокировка. |
protected void | writeUnlock() | Освобождает блокировку записи, ранее полученную с помощью |
Методы, объявленные в классе 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 для аннотирования документа свойствами, относящимися ко всему документу.
- Возвращает:
- не-
nullDictionary - См. также:
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. Например, вы можете запросить у документа d список его слушателей документов следующим кодом:
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)
Это позволяет безопасно отрисовать модель в присутствии конкурентных условий, если модель поддерживает асинхронное обновление. Переданный безымянный метод будет выполнен таким образом, чтобы позволить ему безопасно прочитать модель без изменений во время выполнения безымянного метода. Сам безымянный метод не должен производить никаких мутаций.
Это реализуется с помощью приобретения блокировки для чтения на время выполнения безымянного метода. Одновременно может выполняться несколько безымянных методов, и все операции записи будут заблокированы, пока активны безымянные методы отрисовки. Если безымянный метод вызывает исключение, его блокировка будет безопасно освобождена. Нет защиты от безымянного метода, который никогда не завершается, что фактически оставит документ заблокированным на всё время его существования.
Если переданный безымянный метод пытается выполнить какие-либо мутации в этой реализации, возникнет тупик. Нет отслеживания отдельных потоков отрисовки для обнаружения этой ситуации, но подкласс может понести издержки на их отслеживание и выброс ошибки.
Этот метод потокобезопасен, хотя большинство методов Swing такими не являются. Подробнее см. Конкурентность в Swing.
getLength
public int getLength()
Возвращает длину данных. Это количество символов содержимого, представляющего данные пользователя.
- Определено в:
-
getLengthв интерфейсеDocument - Возвращает:
- длина >= 0
- См. также:
Document.getLength()
addDocumentListener
public void addDocumentListener(DocumentListener listener)
Добавляет слушателя документа для уведомления об изменениях.
- Определено в:
-
addDocumentListenerв интерфейсеDocument - Параметры:
-
listener- добавляемыйDocumentListener - См. также:
Document.addDocumentListener(javax.swing.event.DocumentListener)
removeDocumentListener
public void removeDocumentListener(DocumentListener listener)
Удаляет слушателя документа.
- Определено в:
-
removeDocumentListenerв интерфейсеDocument - Параметры:
-
listener- удаляемыйDocumentListener - См. также:
Document.removeDocumentListener(javax.swing.event.DocumentListener)
getDocumentListeners
public DocumentListener[] getDocumentListeners()
Возвращает массив всех слушателей документа, зарегистрированных в этом документе.
- Возвращает:
- все слушатели этого документа или пустой массив, если слушатели документа не зарегистрированы
- С момента:
- 1.4
- См. также:
-
addDocumentListener(javax.swing.event.DocumentListener),removeDocumentListener(javax.swing.event.DocumentListener)
addUndoableEditListener
public void addUndoableEditListener(UndoableEditListener listener)
Добавляет слушателя отмены для уведомления об изменениях. Операции отмены/повтор, выполненные над UndoableEdit будут вызывать соответствующие события DocumentEvent для поддержания синхронизации представления(ий) с моделью.
- Определено в:
-
addUndoableEditListenerв интерфейсеDocument - Параметры:
-
listener- добавляемыйUndoableEditListener - См. также:
Document.addUndoableEditListener(javax.swing.event.UndoableEditListener)
removeUndoableEditListener
public void removeUndoableEditListener(UndoableEditListener listener)
Удаляет слушателя отмены.
- Определено в:
-
removeUndoableEditListenerв интерфейсеDocument - Параметры:
-
listener- удаляемыйUndoableEditListener - См. также:
Document.removeDocumentListener(javax.swing.event.DocumentListener)
getUndoableEditListeners
public UndoableEditListener[] getUndoableEditListeners()
Возвращает массив всех слушателей отмены/повтор, зарегистрированных в этом документе.
- Возвращает:
- все слушатели отмены/повтор этого документа или пустой массив, если слушатели отмены/повтор не зарегистрированы
- С момента:
- 1.4
- См. также:
-
addUndoableEditListener(javax.swing.event.UndoableEditListener),removeUndoableEditListener(javax.swing.event.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, этот метод удалит свойство. - Specified by:
-
putPropertyв интерфейсеDocument - Parameters:
-
key- ключ, не являющийсяnull -
value- значение свойства - See Also:
getDocumentProperties()
remove
public void remove(int offs,
int len)
throws BadLocationException Удаляет часть содержимого документа. Удаление содержимого приводит к захвату записи блокировки во время фактических изменений. Наблюдатели уведомляются об изменении в потоке, в котором был вызван этот метод.
Этот метод потокобезопасен, хотя большинство методов Swing — нет. Для получения дополнительной информации см. Асинхронность в Swing.
- Specified by:
-
removeв интерфейсеDocument - Parameters:
-
offs- начальный смещение >= 0 -
len- количество символов для удаления >= 0 - Throws:
-
BadLocationException- заданная позиция удаления не является допустимой позицией в документе - 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- индекс дочернего элемента -
length- длина удаляемого текста, может быть 0, что означает ничего не удалять -
text- текст для вставки,nullозначает отсутствие текста для вставки -
attrs- AttributeSet, указывающий атрибуты вставляемого текста,nullявляется допустимым и обычно рассматривается как пустой набор атрибутов, но точное толкование остается на усмотрение подкласса - Throws:
-
BadLocationException- заданная позиция не является допустимой позицией в документе - Since:
- 1.4
insertString
public void insertString(int offs,
String str,
AttributeSet a)
throws BadLocationException Вставляет содержимое в документ. Вставка содержимого приводит к захвату записи блокировки во время фактических изменений, за которым следует уведомление наблюдателей в потоке, который захватил запись блокировки.
Этот метод потокобезопасен, хотя большинство методов Swing — нет. Для получения дополнительной информации см. Асинхронность в Swing.
- Specified by:
-
insertStringв интерфейсеDocument - Parameters:
-
offs- начальный смещение >= 0 -
str- строка для вставки; ничего не делает с null/пустыми строками -
a- атрибуты для вставляемого содержимого - Throws:
-
BadLocationException- заданная позиция вставки не является допустимой позицией в документе - See Also:
Document.insertString(int, java.lang.String, javax.swing.text.AttributeSet)
getText
public String getText(int offset,
int length)
throws BadLocationException Получает последовательность текста из документа.
- Specified by:
-
getTextв интерфейсеDocument - Parameters:
-
offset- начальный смещение >= 0 -
length- количество символов для извлечения >= 0 - Returns:
- текст
- Throws:
-
BadLocationException- указанный диапазон включает позицию, которая не является допустимой позицией в документе - See Also:
Document.getText(int, int)
getText
public void getText(int offset,
int length,
Segment txt)
throws BadLocationException Извлекает текст, содержащийся в заданной части документа.
Если свойство partialReturn параметра txt равно false, возвращаемые в сегменте данные будут иметь полную запрошенную длину и могут или не могут быть копией в зависимости от того, как данные хранились. Если свойство 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;
}
- Specified by:
-
getTextв интерфейсеDocument - Parameters:
-
offset- начальный смещение >= 0 -
length- количество символов для извлечения >= 0 -
txt- объект Segment для извлечения текста - Throws:
-
BadLocationException- указанный диапазон включает позицию, которая не является допустимой позицией в документе
createPosition
public Position createPosition(int offs)
throws BadLocationException Возвращает позицию, которая будет отслеживать изменения при изменении документа.
Этот метод потокобезопасен, хотя большинство методов Swing — нет. Для получения дополнительной информации см. Асинхронность в Swing.
- Specified by:
-
createPositionв интерфейсеDocument - Parameters:
-
offs- позиция в модели >= 0 - Returns:
- позиция
- Throws:
-
BadLocationException- если заданная позиция не представляет действительное расположение в связанном документе - See Also:
Document.createPosition(int)
getStartPosition
public final Position getStartPosition()
Возвращает позицию, представляющую начало документа. Возвращенную позицию можно использовать для отслеживания изменений и сохранения положения в начале документа.
- Specified by:
-
getStartPositionв интерфейсеDocument - Returns:
- позиция
getEndPosition
public final Position getEndPosition()
Возвращает позицию, представляющую конец документа. Возвращенную позицию можно использовать для отслеживания изменений и сохранения положения в конце документа.
- Specified by:
-
getEndPositionв интерфейсеDocument - Returns:
- позиция
getRootElements
public Element[] getRootElements()
Получает все определенные корневые элементы. Обычно их будет только один, поэтому реализация по умолчанию возвращает корневой элемент по умолчанию.
- Specified by:
-
getRootElementsв интерфейсеDocument - Returns:
- корневой элемент
getDefaultRootElement
public abstract Element getDefaultRootElement()
Возвращает корневой элемент, на основе которого должны базироваться представления, если не предоставлена какая-либо другая возможность присваивания представлений структурам элементов.
- Specified by:
-
getDefaultRootElementв интерфейсеDocument - Returns:
- корневой элемент
- See Also:
Document.getDefaultRootElement()
getBidiRootElement
public Element getBidiRootElement()
Возвращает корневой элемент двунаправленной структуры для этого документа. Его дочерние элементы представляют собой последовательности символов с заданным уровнем двунаправленности Юникода.
- Returns:
- корневой элемент двунаправленной структуры для этого документа
getParagraphElement
public abstract Element getParagraphElement(int pos)
Получает элемент абзаца, содержащий заданную позицию. Подклассы должны определить, что именно представляет собой абзац. Однако они должны учитывать, что абзац по меньшей мере должен быть единицей текста, по которой выполняется алгоритм двунаправленной обработки Юникода.
- Parameters:
-
pos- начальный смещение >= 0 - Returns:
- элемент
getAttributeContext
protected final AbstractDocument.AttributeContext getAttributeContext()
Получает контекст для управления атрибутами. Этот метод фактически устанавливает стратегию, используемую для сжатия информации AttributeSet.
- Returns:
- контекст
insertUpdate
protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng,
AttributeSet attr) Обновляет структуру документа в результате вставки текста. Это произойдёт внутри записи блокировки. Если подкласс этого класса переопределяет этот метод, он должен делегировать также суперклассу.
- Parameters:
-
chng- описание изменения -
attr- атрибуты изменения
removeUpdate
protected void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
Обновляет структуру документа в результате удаления текста. Этот метод вызывается до фактического удаления текста из содержимого. Это произойдёт внутри записи блокировки. Если подкласс этого класса переопределяет этот метод, он должен делегировать также суперклассу.
- Parameters:
-
chng- описание изменения
postRemoveUpdate
protected void postRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
Обновляет структуру документа в результате удаления текста. Этот метод вызывается после удаления текста из содержимого. Это произойдёт внутри записи блокировки. Если подкласс этого класса переопределяет этот метод, он должен делегировать также суперклассу.
- Parameters:
-
chng- описание изменения
dump
public void dump(PrintStream out)
Выполняет диагностическую выгрузку.
- Parameters:
-
out- поток вывода
getContent
protected final AbstractDocument.Content getContent()
Получает содержимое документа.
- Returns:
- содержимое
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, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/text/AbstractDocument.html