Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class AbstractDocument extends Object implements Document, Serializable
Этот class реализует механизм блокировки для документа. Это позволяет многократным читателям или одному писателю, и писатели должны ожидать, пока все наблюдатели документа не были уведомлены относительно предыдущего изменения прежде, чем начать другую мутацию к документу. Блокировка чтения получается и выпускала использование render
метод. Блокировка записи является aquired методами, которые видоизменяют документ, и сохранены для продолжительности вызова метода. Уведомление делается на потоке, который произвел мутацию, и у потока есть полный доступ для чтения к документу для продолжительности уведомления, но другие читатели не впускаются, пока уведомление не закончилось. Уведомление является бобовым уведомлением о событии, которое не позволяет дальнейшие мутации, пока все слушатели не были уведомлены.
Любые модели, разделенные на подклассы от этого class и используемый в соединении с текстовым компонентом, который взглянул и реализация чувства, которая получается из BasicTextUI, могут быть безопасно обновлены асинхронно, потому что весь доступ к иерархии Представления сериализируется BasicTextUI, если документ имеет тип AbstractDocument
. Блокировка предполагает, что независимый поток получит доступ к иерархии Представления только от методов DocumentListener, и что будет только один поток события, активный за один раз.
Если поддержка параллелизма требуется, есть следующие дополнительные импликации. Путь выполнения кода для любой реализации DocumentListener и любой реализации UndoListener должен быть ориентирован на многопотоковое исполнение, и не получить доступ к компонентной блокировке, пытаясь быть безопасным от мертвых блокировок. repaint
и revalidate
методы на JComponent безопасны.
AbstractDocument моделирует подразумеваемое повреждение в конце документа. Между прочим это позволяет Вам располагать каре после последнего знака. В результате этого, getLength
возвраты меньше чем длина Контента. Если Вы создаете свой собственный Контент, убеждаетесь и инициализируете его, чтобы иметь дополнительный символ. Обратитесь к StringContent и GapContent для примеров этого. Другая импликация этого - то, что у Элементов, которые моделируют подразумеваемый конечный символ, будет endOffset == (getLength () + 1). Например, в DefaultStyledDocument getParagraphElement(getLength()).getEndOffset() == getLength() + 1
.
Предупреждение: Сериализированные объекты этого class не будут совместимыми с будущими выпусками Swing. Текущая поддержка сериализации является подходящей для краткосрочного хранения или RMI между приложениями, выполняющими ту же самую версию Swing. С 1.4, поддержка длительного хранения всего JavaBeansTM была добавлена к java.beans
пакет. Пожалуйста, см. XMLEncoder
.
Модификатор и Тип | Класс и Описание |
---|---|
class |
AbstractDocument. AbstractElement
Реализует абстрактную часть элемента.
|
static interface |
AbstractDocument. AttributeContext
Интерфейс, который может использоваться, чтобы позволить реализациям MutableAttributeSet использовать сменные методы сжатия атрибута.
|
class |
AbstractDocument. BranchElement
Реализует составной элемент, который содержит другие элементы.
|
static interface |
AbstractDocument. Контент
Интерфейс, чтобы описать последовательность символьного контента, который может быть отредактирован.
|
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
Имя элементов, используемых, чтобы содержать разделы (строки/абзацы).
|
StreamDescriptionProperty, TitleProperty
Модификатор | Конструктор и Описание |
---|---|
protected |
AbstractDocument(AbstractDocument.Content data)
Создает новое
AbstractDocument , перенесенный некоторый указанный механизм хранения контента. |
protected |
AbstractDocument(AbstractDocument.Content data, AbstractDocument.AttributeContext context)
Создает новое
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)
Создает листовой элемент документа.
|
Позиция |
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()
Выбирает контекст для того, чтобы управлять атрибутами.
|
Элемент |
getBidiRootElement()
Возвращает корневой элемент двунаправленной структуры для этого документа.
|
protected AbstractDocument.Content |
getContent()
Получает контент для документа.
|
protected Thread |
getCurrentWriter()
Выбирает текущий поток записи, если есть тот.
|
abstract Element |
getDefaultRootElement()
Возвращает корневой элемент, который представления должны быть основаны на том, если некоторый другой механизм для того, чтобы присвоить представления структурам элемента не обеспечивается.
|
DocumentFilter |
getDocumentFilter()
Возвраты
DocumentFilter это ответственно за фильтрацию вставки/удаления. |
DocumentListener[] |
getDocumentListeners()
Возвращает массив всех слушателей документа, зарегистрированных на этом документе.
|
Dictionary<Object,Object> |
getDocumentProperties()
Поддерживает управляющий ряд свойств.
|
Позиция |
getEndPosition()
Возвращает позицию, которая представляет конец документа.
|
int |
getLength()
Возвращает длину данных.
|
<T extends EventListener> |
getListeners(Class<T> listenerType)
Возвращает массив всех объектов, в настоящий момент зарегистрированных как
FooListener s согласно этому документу. |
abstract Element |
getParagraphElement(int pos)
Получите элемент абзаца, содержащий данную позицию.
|
Объект |
getProperty(Object key)
Метод удобства для того, чтобы искать значение свойства.
|
Элемент[] |
getRootElements()
Получает все корневые определенные элементы.
|
Позиция |
getStartPosition()
Возвращает позицию, которая представляет запуск документа.
|
Строка |
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)
Удаляет область текста от
offset к offset + length , и замены это с text . |
void |
setAsynchronousLoadPriority(int p)
Устанавливает асинхронный приоритет загрузки.
|
void |
setDocumentFilter(DocumentFilter filter)
Наборы
DocumentFilter . |
void |
setDocumentProperties(Dictionary<Object,Object> x)
Заменяет словарь свойств документа для этого документа.
|
protected void |
writeLock()
Получает блокировку, чтобы начать видоизменять документ, который защищает эта блокировка.
|
protected void |
writeUnlock()
Выпускает блокировку записи, ранее полученную через
writeLock . |
protected EventListenerList listenerList
protected static final String BAD_LOCATION
public static final String ParagraphElementName
public static final String ContentElementName
public static final String SectionElementName
public static final String BidiElementName
public static final String ElementNameAttribute
protected AbstractDocument(AbstractDocument.Content data)
AbstractDocument
, перенесенный некоторый указанный механизм хранения контента.data
- контентprotected AbstractDocument(AbstractDocument.Content data, AbstractDocument.AttributeContext context)
AbstractDocument
, перенесенный некоторый указанный механизм хранения контента.data
- контентcontext
- контекст атрибутаpublic Dictionary<Object,Object> getDocumentProperties()
documentProperties
словарь, чтобы аннотировать документ свойствами всего документа.null
Dictionary
setDocumentProperties(java.util.Dictionary<java.lang.Object, java.lang.Object>)
public void setDocumentProperties(Dictionary<Object,Object> x)
x
- новый словарьgetDocumentProperties()
protected void fireInsertUpdate(DocumentEvent e)
e
- событиеEventListenerList
protected void fireChangedUpdate(DocumentEvent e)
e
- событиеEventListenerList
protected void fireRemoveUpdate(DocumentEvent e)
e
- событиеEventListenerList
protected void fireUndoableEditUpdate(UndoableEditEvent e)
e
- событиеEventListenerList
public <T extends EventListener> T[] getListeners(Class<T> listenerType)
FooListener
s согласно этому документу. FooListener
s регистрируются, используя addFooListener
метод. Можно определить listenerType
параметр с литералом class, такой как FooListener.class
. Например, можно запросить документ d
для его слушателей документа со следующим кодом:
DocumentListener[] mls = (DocumentListener[])(d.getListeners(DocumentListener.class));Если никакие такие слушатели не существуют, этот метод возвращает пустой массив.
listenerType
- тип слушателей требуют; этот параметр должен определить интерфейс, который убывает от java.util.EventListener
FooListener
s на этом компоненте, или пустом массиве, если никакие такие слушатели не были добавленыClassCastException
- если listenerType
не определяет class или интерфейс, который реализует java.util.EventListener
getDocumentListeners()
, getUndoableEditListeners()
public int getAsynchronousLoadPriority()
-1
если документ не должен быть загружен асинхронноpublic void setAsynchronousLoadPriority(int p)
p
- новый асинхронный приоритет загрузки; меньше значения чем нуль указывают, что документ не должен быть загружен асинхронноpublic void setDocumentFilter(DocumentFilter filter)
DocumentFilter
. DocumentFilter
передается insert
и remove
условно позволить вставлять/удалять текста. A null
значение указывает, что никакая фильтрация не произойдет.filter
- DocumentFilter
используемый, чтобы ограничить текстgetDocumentFilter()
public DocumentFilter getDocumentFilter()
DocumentFilter
это ответственно за фильтрацию вставки/удаления. A null
возвращаемое значение подразумевает, что никакая фильтрация не должна произойти.setDocumentFilter(javax.swing.text.DocumentFilter)
public void render(Runnable r)
Это реализуется к aquire блокировка чтения для продолжительности runnables выполнения. Может быть многократный runnables, выполняющийся одновременно, и все писатели будут блокированы, в то время как есть активный рендеринг runnables. Если выполнимые броски исключение, его блокировка будет безопасно выпущена. Нет никакой защиты от выполнимого, которое никогда не выходит, который эффективно оставит документ заблокированным, поскольку это - время жизни.
Если данные выполнимые попытки сделать какие-либо мутации в этой реализации, мертвая блокировка произойдет. Нет никакого отслеживания отдельных потоков рендеринга, чтобы позволить обнаружить эту ситуацию, но подкласс мог подвергнуться издержкам отслеживания их и броска ошибки.
Этот метод ориентирован на многопотоковое исполнение, хотя большинство методов Swing не. Пожалуйста, см.
public int getLength()
getLength
в интерфейсе Document
Document.getLength()
public void addDocumentListener(DocumentListener listener)
addDocumentListener
в интерфейсе Document
listener
- DocumentListener
добавитьDocument.addDocumentListener(javax.swing.event.DocumentListener)
public void removeDocumentListener(DocumentListener listener)
removeDocumentListener
в интерфейсе Document
listener
- DocumentListener
удалитьDocument.removeDocumentListener(javax.swing.event.DocumentListener)
public DocumentListener[] getDocumentListeners()
DocumentListener
s или пустой массив, если никакие слушатели документа в настоящий момент не регистрируютсяaddDocumentListener(javax.swing.event.DocumentListener)
, removeDocumentListener(javax.swing.event.DocumentListener)
public void addUndoableEditListener(UndoableEditListener listener)
UndoableEdit
заставит соответствующий DocumentEvent быть уволенным, чтобы сохранить представление (я) в синхронизации с моделью.addUndoableEditListener
в интерфейсе Document
listener
- UndoableEditListener
добавитьDocument.addUndoableEditListener(javax.swing.event.UndoableEditListener)
public void removeUndoableEditListener(UndoableEditListener listener)
removeUndoableEditListener
в интерфейсе Document
listener
- UndoableEditListener
удалитьDocument.removeDocumentListener(javax.swing.event.DocumentListener)
public UndoableEditListener[] getUndoableEditListeners()
UndoableEditListener
s или пустой массив, если никакие невыполнимые слушатели редактирования в настоящий момент не регистрируютсяaddUndoableEditListener(javax.swing.event.UndoableEditListener)
, removeUndoableEditListener(javax.swing.event.UndoableEditListener)
public final Object getProperty(Object key)
getDocumentProperties().get(key);
getProperty
в интерфейсе Document
key
- не -null
ключ свойстваnull
getDocumentProperties()
public final void putProperty(Object key, Object value)
getDocumentProperties().put(key, value);Если
value
null
этот метод удалит свойство.putProperty
в интерфейсе Document
key
- не -null
ключvalue
- значение свойстваgetDocumentProperties()
public void remove(int offs, int len) throws BadLocationException
Этот метод ориентирован на многопотоковое исполнение, хотя большинство методов Swing не. Пожалуйста, см.
remove
в интерфейсе Document
offs
- начальное смещение> = 0len
- число символов, чтобы удалить> = 0BadLocationException
- данные удаляют позицию, не допустимая позиция в пределах документаDocument.remove(int, int)
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
является законным, и обычно обработанный как пустой attributeset, но точную интерпретацию оставляют подклассуBadLocationException
- данная позиция не является допустимой позицией в пределах документаpublic void insertString(int offs, String str, AttributeSet a) throws BadLocationException
Этот метод ориентирован на многопотоковое исполнение, хотя большинство методов Swing не. Пожалуйста, см.
insertString
в интерфейсе Document
offs
- начальное смещение> = 0str
- строка, чтобы вставить; ничего не делает с нулевыми/пустыми строкамиa
- атрибуты для вставленного контентаBadLocationException
- данная позиция вставки не является допустимой позицией в пределах документаDocument.insertString(int, java.lang.String, javax.swing.text.AttributeSet)
public String getText(int offset, int length) throws BadLocationException
getText
в интерфейсе Document
offset
- начальное смещение> = 0length
- число символов, чтобы получить> = 0BadLocationException
- данный диапазон включает позицию, которая не является допустимой позицией в пределах документаDocument.getText(int, int)
public void getText(int offset, int length, Segment txt) throws BadLocationException
Если partialReturn свойство на txt параметре будет ложью, то данные, возвращенные в Сегменте, будут всей длиной, которую требуют, и можете, или, возможно, не копия в зависимости от того, как данные хранились. Если partialReturn свойство является истиной, только количество текста, который может быть возвращен, не создавая копию, возвращается. Используя частичные возвраты даст лучшую производительность для ситуаций, где значительные части документа сканируются. Следующее является примером использования частичного возврата, чтобы получить доступ ко всему документу:
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
- начальное смещение> = 0length
- число символов, чтобы получить> = 0txt
- объект Сегмента получить текст вBadLocationException
- данный диапазон включает позицию, которая не является допустимой позицией в пределах документаpublic Position createPosition(int offs) throws BadLocationException
Этот метод ориентирован на многопотоковое исполнение, хотя большинство методов Swing не. Пожалуйста, см.
createPosition
в интерфейсе Document
offs
- позиция в модели> = 0BadLocationException
- если данная позиция не представляет допустимое расположение в ассоциированном документеDocument.createPosition(int)
public final Position getStartPosition()
getStartPosition
в интерфейсе Document
public final Position getEndPosition()
getEndPosition
в интерфейсе Document
public Element[] getRootElements()
getRootElements
в интерфейсе Document
public abstract Element getDefaultRootElement()
getDefaultRootElement
в интерфейсе Document
Document.getDefaultRootElement()
public Element getBidiRootElement()
public abstract Element getParagraphElement(int pos)
pos
- начальное смещение> = 0protected final AbstractDocument.AttributeContext getAttributeContext()
protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
chng
- описание измененияattr
- атрибуты для измененияprotected void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
chng
- описание измененияprotected void postRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
chng
- описание измененияpublic void dump(PrintStream out)
out
- поток выводаprotected final AbstractDocument.Content getContent()
protected Element createLeafElement(Element parent, AttributeSet a, int p0, int p1)
parent
- родительский элементa
- атрибуты для элементаp0
- начало диапазона> = 0p1
- конец диапазона> = p0protected Element createBranchElement(Element parent, AttributeSet a)
parent
- родительский элементa
- атрибутыprotected final Thread getCurrentWriter()
null
если нет никаких происходящих модификацийprotected final void writeLock()
writeLock
, пока это не пытается получить дополнительный writeLock
s изнутри уведомления о документе. Попытка получить a writeLock
изнутри DocumentListener уведомление приведет к IllegalStateException
. Возможность получить больше чем один writeLock
на поток позволяет подклассам получать writeLock, выполнять много операций, затем выпускать блокировку. Звонки writeLock
должен быть сбалансирован со звонков writeUnlock
, еще Document
будет оставлен в заблокированном состоянии так, чтобы никакое чтение или запись не могли быть сделаны.
IllegalStateException
- брошенный в недопустимую попытку блокировки. Если документ реализуется должным образом, это может только произойти, если слушатель документа пытается видоизменить документ. Эта ситуация нарушает бобовую модель событий, где порядок поставки не гарантируется, и все слушатели должны быть уведомлены прежде, чем дальнейшие мутации позволяются.protected final void writeUnlock()
writeLock
. После постепенного уменьшения блокировки рассчитывают, если не будет никаких блокировок oustanding, то это позволит новому писателю, или читателям.writeLock()
public final void readLock()
readUnlock
.readUnlock()
public final void readUnlock()
readLock();
try {
// do something
} finally {
readUnlock();
}
readLock()
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
ЧЕРНОВАЯ земля-b92