模块  java.desktop
软件包  javax.swing.text

Class DefaultStyledDocument

  • 实现的所有接口
    SerializableDocumentStyledDocument
    已知直接子类:
    HTMLDocument

    public class DefaultStyledDocument
    extends AbstractDocument
    implements StyledDocument
    可以使用与富文本格式类似的方式标记字符和段落样式的文档。 此文档的元素结构表示样式运行的样式交叉。 这些样式运行映射到段落元素结构(可能驻留在某些其他结构中)。 由于逻辑样式被分配给段落边界,因此样式在段落边界处运行。

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

    另请参见:
    DocumentAbstractDocumentSerialized Form
    • 构造方法详细信息

      • DefaultStyledDocument

        public DefaultStyledDocument​(AbstractDocument.Content c,
                                     StyleContext styles)
        构造一个样式文档。
        参数
        c - 内容的容器
        styles - 可跨文档共享的资源和样式定义
      • DefaultStyledDocument

        public DefaultStyledDocument​(StyleContext styles)
        使用默认内容存储实现和一组共享样式构造样式化文档。
        参数
        styles - 样式
      • DefaultStyledDocument

        public DefaultStyledDocument()
        构造默认样式文档。 这会按BUFFER_SIZE_DEFAULT的大小缓冲输入内容,并且具有样式上下文,该样式上下文由文档的生命周期确定,并且不与其他文档共享。
    • 方法详细信息

      • 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",结尾, "\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 - 是替换现有属性还是合并它们
      • getCharacterElement

        public Element getCharacterElement​(int pos)
        获取基于位置的字符元素。
        Specified by:
        getCharacterElement在界面 StyledDocument
        参数
        pos - 文档中的位置> = 0
        结果
        元素
      • styleChanged

        protected void styleChanged​(Style style)
        当本文档的任何样式发生变化时调用。 子类可能希望对损坏的内容有所了解。
        参数
        style - 已更改的样式。