|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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 上执行 repaint
和 revalidate
方法是安全的。
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
。
嵌套类摘要 | |
---|---|
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) 构造具有某种指定内容存储机制的新 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) 创建文档叶元素。 |
|
Position |
createPosition(int offs) 返回更改文档时,将跟踪更改的位置。 |
|
void |
dump(PrintStream out) 提供诊断转储 (dump)。 |
|
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() 返回负责进行插入/移除过滤的 DocumentFilter 。 |
|
DocumentListener[] |
getDocumentListeners() 返回在此文档上注册的所有文档侦听器的数组。 |
|
Dictionary<Object,Object> |
getDocumentProperties() 支持管理属性集。 |
|
Position |
getEndPosition() 返回表示文档结尾的位置。 |
|
int |
getLength() 返回数据的长度。 |
|
|
getListeners(Class<T> listenerType) 返回目前已在此文档上注册为 FooListener 的所有对象组成的数组。 |
|
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) 删除从 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 所获得的写入锁定。 |
从类 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
- 内容