- java.lang.Object
-
- javax.swing.text.AbstractDocument
-
- javax.swing.text.DefaultStyledDocument
-
- All Implemented Interfaces:
-
Serializable
,Document
,StyledDocument
- 已知直接子类:
-
HTMLDocument
public class DefaultStyledDocument extends AbstractDocument implements StyledDocument
可以以与RTF格式相似的方式标记字符和段落样式的文档。 此文档的元素结构表示样式运行的样式交叉。 这些样式运行映射到段落元素结构(可能驻留在某种其他结构中)。 风格运行在段落边界,因为逻辑风格被分配到段落边界。警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,对所有JavaBeans的长期存储的支持已被添加到
java.beans
包中。 请参阅XMLEncoder
。- 另请参见:
-
Document
,AbstractDocument
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
DefaultStyledDocument.AttributeUndoableEdit
一个UndoableEdit用于记住对元素的AttributeSet更改。class
DefaultStyledDocument.ElementBuffer
用于管理元素层次结构更改的类。static class
DefaultStyledDocument.ElementSpec
建筑元素规范。protected class
DefaultStyledDocument.SectionElement
文档的默认根元素...映射包含的段落/行。-
Nested classes/interfaces inherited from class javax.swing.text.AbstractDocument
AbstractDocument.AbstractElement, AbstractDocument.AttributeContext, AbstractDocument.BranchElement, AbstractDocument.Content, AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractDocument.LeafElement
-
-
Field Summary
Fields Modifier and Type Field 描述 protected DefaultStyledDocument.ElementBuffer
buffer
元素缓冲区。static int
BUFFER_SIZE_DEFAULT
初始内容缓冲区的默认大小。-
Fields inherited from class javax.swing.text.AbstractDocument
BAD_LOCATION, BidiElementName, ContentElementName, ElementNameAttribute, listenerList, ParagraphElementName, SectionElementName
-
Fields inherited from interface javax.swing.text.Document
StreamDescriptionProperty, TitleProperty
-
-
构造方法摘要
构造方法 Constructor 描述 DefaultStyledDocument()
构造默认样式文档。DefaultStyledDocument(AbstractDocument.Content c, StyleContext styles)
构造一个风格的文档。DefaultStyledDocument(StyleContext styles)
构造具有默认内容存储实现和共享样式集的样式文档。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
addDocumentListener(DocumentListener listener)
添加文档侦听器以通知任何更改。Style
addStyle(String nm, Style parent)
在逻辑样式层次结构中添加新样式。protected void
create(DefaultStyledDocument.ElementSpec[] data)
初始化文档以反映给定的元素结构(即getDefaultRootElement
方法报告的结构)。protected AbstractDocument.AbstractElement
createDefaultRoot()
创建用于表示默认文档结构的根元素。Color
getBackground(AttributeSet attr)
从属性集获取背景颜色。Element
getCharacterElement(int pos)
基于位置获取字符元素。Element
getDefaultRootElement()
获取默认的根元素。Font
getFont(AttributeSet attr)
从属性集获取字体。Color
getForeground(AttributeSet attr)
从属性集获取前景色。Style
getLogicalStyle(int p)
获取分配给由给定位置表示的段落的逻辑风格。Element
getParagraphElement(int pos)
获取偏移量为pos
的段落元素。Style
getStyle(String nm)
获取先前添加的命名样式。Enumeration<?>
getStyleNames()
获取样式名称列表。protected void
insert(int offset, DefaultStyledDocument.ElementSpec[] data)
批量插入新元素。protected void
insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
更新由于文本插入而导致的文档结构。void
removeDocumentListener(DocumentListener listener)
删除文档监听器。void
removeElement(Element elem)
从此文档中删除元素。void
removeStyle(String nm)
删除之前添加到文档的命名样式。protected void
removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
由于删除文本而更新文档结构。void
setCharacterAttributes(int offset, int length, AttributeSet s, boolean replace)
设置文档某些部分的属性。void
setLogicalStyle(int pos, Style s)
设置用于给定位置的段落的逻辑样式。void
setParagraphAttributes(int offset, int length, AttributeSet s, boolean replace)
设置段落的属性。protected void
styleChanged(Style style)
当本文档的任何样式发生变化时调用。-
Methods inherited from class javax.swing.text.AbstractDocument
addUndoableEditListener, createBranchElement, createLeafElement, createPosition, dump, fireChangedUpdate, fireInsertUpdate, fireRemoveUpdate, fireUndoableEditUpdate, getAsynchronousLoadPriority, getAttributeContext, getBidiRootElement, getContent, getCurrentWriter, getDocumentFilter, getDocumentListeners, getDocumentProperties, getEndPosition, getLength, getListeners, getProperty, getRootElements, getStartPosition, getText, getText, getUndoableEditListeners, insertString, postRemoveUpdate, putProperty, readLock, readUnlock, remove, removeUndoableEditListener, render, replace, setAsynchronousLoadPriority, setDocumentFilter, setDocumentProperties, writeLock, writeUnlock
-
Methods inherited from interface javax.swing.text.Document
addUndoableEditListener, createPosition, getEndPosition, getLength, getProperty, getRootElements, getStartPosition, getText, getText, insertString, putProperty, remove, removeUndoableEditListener, render
-
-
-
-
字段详细信息
-
BUFFER_SIZE_DEFAULT
public static final int BUFFER_SIZE_DEFAULT
初始内容缓冲区的默认大小。- 另请参见:
- Constant Field Values
-
buffer
protected DefaultStyledDocument.ElementBuffer buffer
元素缓冲区。
-
-
构造方法详细信息
-
DefaultStyledDocument
public DefaultStyledDocument(AbstractDocument.Content c, StyleContext styles)
构造一个风格的文档。- 参数
-
c
- 容器的内容 -
styles
- 可以跨文档共享的资源和样式定义
-
DefaultStyledDocument
public DefaultStyledDocument(StyleContext styles)
构造具有默认内容存储实现和共享样式集的样式文档。- 参数
-
styles
- 风格
-
DefaultStyledDocument
public DefaultStyledDocument()
构造默认样式文档。 这将缓冲输入内容大小为BUFFER_SIZE_DEFAULT,并具有在文档生命周期内限定范围的样式上下文,并且不与其他文档共享。
-
-
方法详细信息
-
getDefaultRootElement
public Element getDefaultRootElement()
获取默认的根元素。- Specified by:
-
getDefaultRootElement
在接口Document
- Specified by:
-
getDefaultRootElement
在AbstractDocument
- 结果
- 根
- 另请参见:
-
Document.getDefaultRootElement()
-
create
protected void create(DefaultStyledDocument.ElementSpec[] data)
初始化文档以反映给定的元素结构(即由getDefaultRootElement
方法报告的结构)。如果文档包含任何数据,将首先被删除。- 参数
-
data
- 元素数据
-
insert
protected void insert(int offset, DefaultStyledDocument.ElementSpec[] data) throws BadLocationException
批量插入新元素。 这对于允许在解锁状态下解析文档并准备元素结构修改是有用的。 该方法使用一系列令牌来描述如何更新元素结构,以便在异步更新情况下可以大大减少写入锁定内的时间。这种方法是线程安全的,尽管大多数Swing方法都不是。 详情请见Concurrency in Swing 。
- 参数
-
offset
- 起始偏移量> = 0 -
data
- 元素数据 - 异常
-
BadLocationException
- 起始偏移无效
-
removeElement
public void removeElement(Element elem)
从此文档中删除元素。该元素从其父元素中删除,以及由元素标识的范围内的文本。 如果元素不与文档相关联,则抛出
IllegalArgumentException
。由于文档中不允许有空的分支元素,如果元素是唯一的子元素,那么它的父元素也将被递归移除。 这意味着在替换特定元素的所有子元素时,应该添加新的子元素, 然后再删除旧的子元素。
在两个事件元素移除结果被解雇,在
DocumentEvent
为元素结构的变化和UndoableEditEvent
对文档内容的变化。如果元素包含内容结束标记(文档中的最后一个
"\n"
字符),则此字符不会被删除; 相反,前面的叶元素被扩展以覆盖字符。 如果最后一个叶子已经以"\n",
结束,它将被包含在内容删除中。如果该元素是
null,
NullPointerException
被抛出。 如果元素结构在删除之后变得无效,例如,如果元素是文档根元素,则抛出IllegalArgumentException
。 如果当前的元素结构无效,则抛出IllegalStateException
。- 参数
-
elem
- 要删除的元素 - 异常
-
NullPointerException
- 如果元素是null
-
IllegalArgumentException
- 如果元素无法删除 -
IllegalStateException
- 如果元素结构无效 - 从以下版本开始:
- 1.7
-
addStyle
public Style addStyle(String nm, Style parent)
在逻辑样式层次结构中添加新样式。 样式属性从下到上解析,因此在孩子中指定的属性将覆盖父项中指定的属性。- Specified by:
-
addStyle
接口StyledDocument
- 参数
-
nm
- 样式的名称(在命名样式的集合中必须是唯一的)。 如果风格未命名,名称可能为null,但是调用者负责管理返回的引用,因为未命名的样式无法通过名称获取。 一个未命名的样式可能对于诸如字符属性覆盖(例如在样式运行中找到)的事情是有用的。 -
parent
- 父风格。 如果未指定的属性不需要以某种其他风格解析,则此值可能为null。 - 结果
- 样式
-
removeStyle
public void removeStyle(String nm)
删除之前添加到文档的命名样式。- Specified by:
-
removeStyle
在接口StyledDocument
- 参数
-
nm
- 要删除的样式的名称
-
getStyle
public Style getStyle(String nm)
获取先前添加的命名样式。- Specified by:
-
getStyle
在接口StyledDocument
- 参数
-
nm
- 样式的名称 - 结果
- 样式
-
getStyleNames
public Enumeration<?> getStyleNames()
获取样式名称列表。- 结果
- 所有的风格名称
-
setLogicalStyle
public void setLogicalStyle(int pos, Style s)
设置用于给定位置的段落的逻辑样式。 如果没有为字符和段落属性明确设置属性,则它们将通过分配给段落的逻辑风格进行解析,而后者又可以通过某些层次结构完全独立于文档中的元素层次结构来解析属性。这种方法是线程安全的,尽管大多数Swing方法都不是。 详情请参阅Concurrency in Swing 。
- Specified by:
-
setLogicalStyle
在接口StyledDocument
- 参数
-
pos
- 从文档开始> = 0的偏移量 -
s
- 分配给段落的逻辑样式,如果没有则为null
-
getLogicalStyle
public Style getLogicalStyle(int p)
获取分配给由给定位置表示的段落的逻辑风格。- Specified by:
-
getLogicalStyle
在接口StyledDocument
- 参数
-
p
- 转换为段落的位置,并确定分配的逻辑样式> = 0。这是从文档开头的偏移量。 - 结果
- 样式,如果没有则为null
-
setCharacterAttributes
public void setCharacterAttributes(int offset, int length, AttributeSet s, boolean replace)
设置文档某些部分的属性。 在进行更改时,此操作将保留写入锁定,并且在更改成功完成后将DocumentEvent发送到侦听器。这种方法是线程安全的,尽管大多数Swing方法都不是。 详情请参阅Concurrency in Swing 。
- Specified by:
-
setCharacterAttributes
在接口StyledDocument
- 参数
-
offset
- 文档中的偏移量> = 0 -
length
- 长度> = 0 -
s
- 属性 -
replace
- 如果在设置新属性之前应该替换以前的属性,replace
true
-
setParagraphAttributes
public void setParagraphAttributes(int offset, int length, AttributeSet s, boolean replace)
设置段落的属性。这种方法是线程安全的,尽管大多数Swing方法都不是。 详情请见Concurrency in Swing 。
- Specified by:
-
setParagraphAttributes
在接口StyledDocument
- 参数
-
offset
- 偏移到段落> = 0 -
length
- 受影响的字符数> = 0 -
s
- 属性 -
replace
- 是否替换现有属性,或合并它们
-
getParagraphElement
public Element getParagraphElement(int pos)
获取偏移量为pos
的段落元素。 一段由至少一个子元素组成,通常是一个叶子。- Specified by:
-
getParagraphElement
在接口StyledDocument
- Specified by:
-
getParagraphElement
在AbstractDocument
- 参数
-
pos
- 起始偏移量> = 0 - 结果
- 元素
-
getCharacterElement
public Element getCharacterElement(int pos)
基于位置获取字符元素。- Specified by:
-
getCharacterElement
在接口StyledDocument
- 参数
-
pos
- 文档中的位置> = 0 - 结果
- 元素
-
insertUpdate
protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
更新由于文本插入而导致的文档结构。 这将在写锁中发生。 该实现简单地解析插入的换行内容,并为元素缓冲区建立一组指令。- 重写:
-
insertUpdate
在AbstractDocument
- 参数
-
chng
- 文件更改的说明 -
attr
- 属性
-
removeUpdate
protected void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
由于删除文本而更新文档结构。- 重写:
-
removeUpdate
在AbstractDocument
- 参数
-
chng
- 文件更改的说明
-
createDefaultRoot
protected AbstractDocument.AbstractElement createDefaultRoot()
创建用于表示默认文档结构的根元素。- 结果
- 元素基础
-
getForeground
public Color getForeground(AttributeSet attr)
从属性集获取前景色。- Specified by:
-
getForeground
在接口StyledDocument
- 参数
-
attr
- 属性集 - 结果
- 颜色
-
getBackground
public Color getBackground(AttributeSet attr)
从属性集获取背景颜色。- Specified by:
-
getBackground
在接口StyledDocument
- 参数
-
attr
- 属性集 - 结果
- 颜色
-
getFont
public Font getFont(AttributeSet attr)
从属性集获取字体。- Specified by:
-
getFont
在接口StyledDocument
- 参数
-
attr
- 属性集 - 结果
- 字体
-
styleChanged
protected void styleChanged(Style style)
当本文档的任何样式发生变化时调用。 子类可能希望对什么被损坏是聪明的。- 参数
-
style
- 已更改的样式。
-
addDocumentListener
public void addDocumentListener(DocumentListener listener)
添加文档侦听器以通知任何更改。- Specified by:
-
addDocumentListener
在接口Document
- 重写:
-
addDocumentListener
在AbstractDocument
- 参数
-
listener
- 听众 - 另请参见:
-
Document.addDocumentListener(javax.swing.event.DocumentListener)
-
removeDocumentListener
public void removeDocumentListener(DocumentListener listener)
删除文档监听器。- Specified by:
-
removeDocumentListener
在接口Document
- 重写:
-
removeDocumentListener
在AbstractDocument
- 参数
-
listener
- 听众 - 另请参见:
-
Document.removeDocumentListener(javax.swing.event.DocumentListener)
-
-