所有类


javax.swing.text
类 AbstractDocument

java.lang.Object
  继承者 javax.swing.text.AbstractDocument
所有已实现的接口:
Serializable, Document
直接已知子类:
DefaultStyledDocument, PlainDocument

public abstract class AbstractDocument
   
   
   
   
extends Object
implements Document, Serializable

文档接口的实现,可作为实现各种文档的基础。在此级别上几乎没有策略,所以相应地增加了使用难度。

此类实现了文档的锁定机制。它允许多个 reader 或一个 writer,并且在 writer 开始对文档的另一次改变前,必须等到将以前的更改已通知该文档的所有观察者。使用 render 方法获取和释放读取锁定。通过改变文档的那些方法来获取写入锁定,并且在该方法调用期间保持锁定。在生成改变的线程上完成通知,并且在通知期间该线程对文件具有完全的读取访问权限,不过在通知结束前其他 reader 无法读取。该通知是一个 bean 事件通知,只有通知所有侦听器之后才允许进一步的改变。

所有根据此类创建子类且与文本组件(该组件具有派生自 BasicTextUI 的外观实现)一起使用的模型都可安全地进行异步更新,因为如果该文档的类型是 AbstractDocument,则对 View 层次结构的所有访问都是由 BasicTextUI 序列化的。锁定机制假定独立的线程仅从 DocumentListener 方法访问 View 层次结构,并且同一时间只有一个事件线程处于活动状态。

如果需要并发支持,则有下列额外的含义。所有 DocumentListener 实现和所有 UndoListener 实现的代码路径必须是线程安全的,并且如果要避免死锁,则不能访问组件锁定。在 JComponent 上执行 repaintrevalidate 方法是安全的。

AbstractDocument 在文档的结尾模拟了一个隐含的分隔。除了其他作用,这一功能允许您在最后一个字符的后面定位插入符。因此,getLength 返回一个比 Content 的长度小的值。如果创建自己的 Content,一定要有一个额外的字符并且初始化它。有关此内容的示例,请参见 StringContent 和 GapContent。另一个含义是模拟该隐含结束字符的 Element 具有 endOffset == (getLength() + 1)。例如,在 DefaultStyledDocument 中,getParagraphElement(getLength()).getEndOffset() == getLength() + 1

警告:此类的已序列化对象与以后的 Swing 版本不兼容。当前的序列化支持适用于短期存储或运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder


嵌套类摘要
 classAbstractDocument.AbstractElement
          实现元素的抽象部分。
static interfaceAbstractDocument.AttributeContext
          一个接口,它用于允许 MutableAttributeSet 的实现使用可插入属性压缩技术。
 classAbstractDocument.BranchElement
          实现一个包含其他元素的复合元素。
static interfaceAbstractDocument.Content
          描述可编辑的字符序列内容的接口。
 classAbstractDocument.DefaultDocumentEvent
          存储修改文档时发生的文档更改。
static classAbstractDocument.ElementEdit
          一个 ElementChange 实现,可将其添加到文档事件中。
 classAbstractDocument.LeafElement
          实现可直接表示某类内容的元素。
 
字段摘要
protected static StringBAD_LOCATION
          指示位置错误的错误消息。
static StringBidiElementName
          用于保存单向操作的元素名。
static StringContentElementName
          用于表示内容的元素名
static StringElementNameAttribute
          用于指定元素名的属性名。
protected  EventListenerListlistenerList
          文档的事件侦听器列表。
static StringParagraphElementName
          用于表示段落的元素名
static StringSectionElementName
          用于保存各节(行/段落)的元素名。
 
从接口 javax.swing.text.Document 继承的字段
StreamDescriptionProperty, TitleProperty
 
构造方法摘要
protected AbstractDocument(AbstractDocument.Content data)
          构造具有某种指定内容存储机制的新 AbstractDocument
protected AbstractDocument(AbstractDocument.Content data, AbstractDocument.AttributeContext context)
          构造具有某种指定内容存储机制的新 AbstractDocument
 
方法摘要
 voidaddDocumentListener(DocumentListener listener)
          添加负责通知任何更改的文档侦听器。
 voidaddUndoableEditListener(UndoableEditListener listener)
          添加负责通知任何更改的撤消侦听器。
protected  ElementcreateBranchElement(Element parent, AttributeSet a)
          创建文档分支元素,它可包含其他元素。
protected  ElementcreateLeafElement(Element parent, AttributeSet a, int p0, int p1)
          创建文档叶元素。
 PositioncreatePosition(int offs)
          返回更改文档时,将跟踪更改的位置。
 voiddump(PrintStream out)
          提供诊断转储 (dump)。
protected  voidfireChangedUpdate(DocumentEvent e)
          通知已注册对获得此事件类型通知感兴趣的所有侦听器。
protected  voidfireInsertUpdate(DocumentEvent e)
          通知已注册对获得此事件类型通知感兴趣的所有侦听器。
protected  voidfireRemoveUpdate(DocumentEvent e)
          通知已注册对获得此事件类型通知感兴趣的所有侦听器。
protected  voidfireUndoableEditUpdate(UndoableEditEvent e)
          通知已注册对获得此事件类型通知感兴趣的所有侦听器。
 intgetAsynchronousLoadPriority()
          获得异步加载优先级。
protected  AbstractDocument.AttributeContextgetAttributeContext()
          获取管理属性的上下文。
 ElementgetBidiRootElement()
          返回此文档双向结构的根元素。
protected  AbstractDocument.ContentgetContent()
          获得文档的内容。
protected  ThreadgetCurrentWriter()
          获取当前的写入线程(如果有的话)。
abstract  ElementgetDefaultRootElement()
          返回视图赖依存在的根元素,除非提供了向元素结构指派视图的其他机制。
 DocumentFiltergetDocumentFilter()
          返回负责进行插入/移除过滤的 DocumentFilter
 DocumentListener[]getDocumentListeners()
          返回在此文档上注册的所有文档侦听器的数组。
 Dictionary<Object,Object>getDocumentProperties()
          支持管理属性集。
 PositiongetEndPosition()
          返回表示文档结尾的位置。
 intgetLength()
          返回数据的长度。
<T extends EventListener>
T[]
getListeners(Class<T> listenerType)
          返回目前已在此文档上注册为 FooListener 的所有对象组成的数组。
abstract  ElementgetParagraphElement(int pos)
          获得包含给定位置的段落元素。
 ObjectgetProperty(Object key)
          查找属性值的便捷方法。
 Element[]getRootElements()
          获得已定义的所有根元素。
 PositiongetStartPosition()
          返回表示文档开始的位置。
 StringgetText(int offset, int length)
          从文档中获得文本序列。
 voidgetText(int offset, int length, Segment txt)
          获取文档给定部分内包含的文本。
 UndoableEditListener[]getUndoableEditListeners()
          返回在此文档上注册的所有可撤消编辑侦听器的数组。
 voidinsertString(int offs, String str, AttributeSet a)
          将某些内容插入文档。
protected  voidinsertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
          在文本插入后更新文档结构。
protected  voidpostRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
          随文本的移除更新任何文档结构。
 voidputProperty(Object key, Object value)
          存储属性值的便捷方法。
 voidreadLock()
          获取一个锁定,以开始读取文档的某个状态。
 voidreadUnlock()
          执行读取解除锁定。
 voidremove(int offs, int len)
          从文档中移除某些内容。
 voidremoveDocumentListener(DocumentListener listener)
          移除文档侦听器。
 voidremoveUndoableEditListener(UndoableEditListener listener)
          移除撤消侦听器。
protected  voidremoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
          随文本的移除更新任何文档结构。
 voidrender(Runnable r)
          如果模型支持被异步更新,则此方法允许在并发情况下安全地呈现该模型。
 voidreplace(int offset, int length, String text, AttributeSet attrs)
          删除从 offsetoffset + length 的文本区域,并用 text 替换它。
 voidsetAsynchronousLoadPriority(int p)
          设置异步加载优先级。
 voidsetDocumentFilter(DocumentFilter filter)
          设置 DocumentFilter
 voidsetDocumentProperties(Dictionary<Object,Object> x)
          替换此文档的文档属性字典。
protected  voidwriteLock()
          获取一个锁定,以开始改变此锁定保护的文档。
protected  voidwriteUnlock()
          释放以前通过 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 - 内容