Module java.desktop
Package javax.swing.text

Class DefaultStyledDocument

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

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

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

参见:
  • Field Details

  • Constructor Details

    • DefaultStyledDocument

      public DefaultStyledDocument(AbstractDocument.Content c, StyleContext styles)
      构造带有样式的文档。
      参数:
      c - 内容的容器
      styles - 可在文档之间共享的资源和样式定义
    • DefaultStyledDocument

      public DefaultStyledDocument(StyleContext styles)
      使用默认内容存储实现和共享样式集构造带有样式的文档。
      参数:
      styles - 样式
    • DefaultStyledDocument

      public DefaultStyledDocument()
      构造默认样式文档。此文档通过BUFFER_SIZE_DEFAULT的大小缓冲输入内容,并具有文档生命周期范围的样式上下文,不与其他文档共享。
  • Method Details

    • getDefaultRootElement

      public Element getDefaultRootElement()
      获取默认根元素。
      指定者:
      getDefaultRootElement 在接口 Document
      指定者:
      getDefaultRootElement 在类 AbstractDocument
      返回:
      参见:
    • create

      protected void create(DefaultStyledDocument.ElementSpec[] data)
      初始化文档以反映给定的元素结构(即通过getDefaultRootElement方法报告的结构)。如果文档包含任何数据,将首先删除它。
      参数:
      data - 元素数据
    • insert

      protected void insert(int offset, DefaultStyledDocument.ElementSpec[] data) throws BadLocationException
      批量插入新元素。这对于允许在未锁定状态下使用文档进行解析并准备元素结构修改非常有用。此方法接受描述如何更新元素结构的令牌数组,因此在异步更新情况下可以大大减少写锁定内的时间。

      此方法是线程安全的,尽管大多数Swing方法不是。有关更多信息,请参见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)
      将新样式添加到逻辑样式层次结构中。样式属性从下到上解析,因此在子级中指定的属性将覆盖父级中指定的属性。
      指定者:
      addStyle 在接口 StyledDocument
      参数:
      nm - 样式的名称(必须在命名样式集合中是唯一的)。如果样式未命名,则名称可以为null,但调用者负责管理返回的引用,因为无法通过名称获取未命名样式。未命名样式可能对于诸如样式运行中发现的字符属性覆盖等事物很有用。
      parent - 父样式。如果未指定属性需要在其他样式中解析,则此项可以为null。
      返回:
      样式
    • removeStyle

      public void removeStyle(String nm)
      从文档中移除先前添加的命名样式。
      指定者:
      removeStyle 在接口 StyledDocument
      参数:
      nm - 要移除的样式的名称
    • getStyle

      public Style getStyle(String nm)
      获取先前添加的命名样式。
      指定者:
      getStyle 在接口 StyledDocument
      参数:
      nm - 样式的名称
      返回:
      样式
    • getStyleNames

      public Enumeration<?> getStyleNames()
      获取样式名称列表。
      返回:
      所有的样式名称
    • setLogicalStyle

      public void setLogicalStyle(int pos, Style s)
      设置给定位置段落使用的逻辑样式。如果未为字符和段落属性明确设置属性,则将通过分配给段落的逻辑样式解析这些属性,而这可能会通过与文档中元素层次结构完全独立的某些层次解析。

      此方法是线程安全的,尽管大多数Swing方法不是。更多信息请参阅Swing中的并发性

      指定者:
      setLogicalStyle 在接口 StyledDocument
      参数:
      pos - 距离文档开头的偏移量 >= 0
      s - 要分配给段落的逻辑样式,如果没有则为null
    • getLogicalStyle

      public Style getLogicalStyle(int p)
      获取给定位置表示的段落分配的逻辑样式。
      指定者:
      getLogicalStyle 在接口 StyledDocument
      参数:
      p - 要转换为段落并确定分配的逻辑样式的位置 >= 0。这是从文档开头的偏移量。
      返回:
      样式,如果没有则为null
    • setCharacterAttributes

      public void setCharacterAttributes(int offset, int length, AttributeSet s, boolean replace)
      为文档的某个部分设置属性。在进行更改时,此操作会持有写锁,并在更改成功完成后向监听器发送DocumentEvent。

      offsetlength定义设置属性的文本范围。如果长度<= 0,则不执行任何操作,方法只是返回。如果偏移量<=0或>文本长度,则不执行任何操作,方法只是返回。否则,如果offset + length将超过文本的长度,则受影响的范围将被截断。

      此方法是线程安全的,尽管大多数Swing方法不是。更多信息请参阅Swing中的并发性

      指定者:
      setCharacterAttributes 在接口 StyledDocument
      参数:
      offset - 文档中的偏移量 >= 0
      length - 长度 > 0
      s - 属性
      replace - 如果应在设置新属性之前替换先前的属性,则为true
    • setParagraphAttributes

      public void setParagraphAttributes(int offset, int length, AttributeSet s, boolean replace)
      为段落设置属性。

      此方法是线程安全的,尽管大多数Swing方法不是。更多信息请参阅Swing中的并发性

      指定者:
      setParagraphAttributes 在接口 StyledDocument
      参数:
      offset - 段落中的偏移量 >= 0
      length - 受影响的字符数 >= 0
      s - 属性
      replace - 是否替换现有属性或合并它们
    • getParagraphElement

      public Element getParagraphElement(int pos)
      获取偏移量pos处的段落元素。段落至少包含一个子元素,通常是一个叶子。
      指定者:
      getParagraphElement 在接口 StyledDocument
      指定者:
      getParagraphElement 在类 AbstractDocument
      参数:
      pos - 起始偏移量 >= 0
      返回:
      元素
    • getCharacterElement

      public Element getCharacterElement(int pos)
      根据位置获取字符元素。
      指定者:
      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)
      从属性集中获取前景色。
      指定者:
      getForeground 在接口 StyledDocument
      参数:
      attr - 属性集
      返回:
      颜色
    • getBackground

      public Color getBackground(AttributeSet attr)
      从属性集中获取背景色。
      指定者:
      getBackground 在接口 StyledDocument
      参数:
      attr - 属性集
      返回:
      颜色
    • getFont

      public Font getFont(AttributeSet attr)
      从属性集中获取字体。
      指定者:
      getFont 在接口 StyledDocument
      参数:
      attr - 属性集
      返回:
      字体
    • styleChanged

      protected void styleChanged(Style style)
      当文档的任何样式更改时调用。子类可能希望智能地处理哪些内容受损。
      参数:
      style - 已更改的样式
    • addDocumentListener

      public void addDocumentListener(DocumentListener listener)
      添加文档监听器以通知任何更改。
      指定者:
      addDocumentListener 在接口 Document
      覆盖:
      addDocumentListener 在类 AbstractDocument
      参数:
      listener - 监听器
      参见:
    • removeDocumentListener

      public void removeDocumentListener(DocumentListener listener)
      移除文档监听器。
      指定者:
      removeDocumentListener 在接口 Document
      覆盖:
      removeDocumentListener 在类 AbstractDocument
      参数:
      listener - 监听器
      参见: