javax.swing.text.html

异常
java.lang.Object
  继承者 javax.swing.text.AbstractDocument
      继承者 javax.swing.text.DefaultStyledDocument
          继承者 javax.swing.text.html.HTMLDocument
所有已实现的接口:
Serializable, Document, StyledDocument

public class HTMLDocument
     
extends DefaultStyledDocument

对 HTML 进行建模的文档。此模型的目的是支持浏览和编辑。因此,默认情况下 HTML 文档所描述的结构不是精确一致的。默认情况下被建模的元素结构是通过 HTMLDocument.HTMLReader 类构建的,此类实现了解析器所期望的 HTMLEditorKit.ParserCallback 协议。要更改结构,可以创建 HTMLReader 的子类,并且重新实现 getReader(int) 方法以返回新的 reader 实现。有关创建默认结构的细节,请参考 HTMLReader 文档。其目的是使文档无丢失(non-lossy)(虽然重新生成 HTML 格式可能导致出现不同的格式)。

文档只对 HTML 建模,并且不尝试在其中存储视图属性。元素由 StyleContext.NameAttribute 属性标识,此属性应该始终有一个标识元素种类的 HTML.Tag 类型值。某些元素(例如注释)是合成的。HTMLFactory 使用此属性来确定要构建哪种视图。

此文档支持增量加载。TokenThreshold 属性控制在试图更新文档的元素结构之前要缓冲的解析数量。通过 EditorKit 来设置此属性,以便子类可以禁用它。

Base 属性根据解析哪些相对 URL 来确定 URL。默认情况下,如果属性值是 URL,则这将是 Document.StreamDescriptionProperty。如果遇到 <BASE> 标记,则基本 URL 将成为该标记所指定的 URL。因为基本 URL 是一个属性,因此毫无疑问可以直接设置它。

此文档的默认内容存储机制是一个间隙缓冲区 (GapContent)。通过使用带有 Content 实现的构造方法,可以提供某些替代方法。

警告: 此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已经在 java.beans 包添加了对所有 JavaBeansTM 长期存储的支持。请参阅 XMLEncoder


嵌套类摘要
 class HTMLDocument.BlockElement
          表示结构性 HTML 的元素。
 class HTMLDocument.HTMLReader
          一个 HTML reader,用来加载具有 HTML 元素结构的 HTML 文档。
static class HTMLDocument.Iterator
          对特定类型的标记进行迭代的迭代器。
 class HTMLDocument.RunElement
          表示文本块的元素,该文本块具有一个分配给它的 HTML 字符级的属性集。
 
从类 javax.swing.text.DefaultStyledDocument 继承的嵌套类/接口
DefaultStyledDocument.AttributeUndoableEdit, DefaultStyledDocument.ElementBuffer, DefaultStyledDocument.ElementSpec, DefaultStyledDocument.SectionElement
 
从类 javax.swing.text.AbstractDocument 继承的嵌套类/接口
AbstractDocument.AbstractElement, AbstractDocument.AttributeContext, AbstractDocument.BranchElement, AbstractDocument.Content, AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractDocument.LeafElement
 
字段摘要
static String AdditionalComments
          文档属性键值。
 
从类 javax.swing.text.DefaultStyledDocument 继承的字段
buffer, BUFFER_SIZE_DEFAULT
 
从类 javax.swing.text.AbstractDocument 继承的字段
BAD_LOCATION, BidiElementName, ContentElementName, ElementNameAttribute, listenerList, ParagraphElementName, SectionElementName
 
从接口 javax.swing.text.Document 继承的字段
StreamDescriptionProperty, TitleProperty
 
构造方法摘要
HTMLDocument()
          使用默认的缓冲区大小和默认的 StyleSheet 构造 HTML 文档。
HTMLDocument(AbstractDocument.Content c, StyleSheet styles)
          构造具有给定内容存储实现和给定样式/属性存储机制的 HTML 文档。
HTMLDocument(StyleSheet styles)
          构造具有默认内容存储实现和指定样式/属性存储机制的 HTML 文档。
 
方法摘要
protected  void create(DefaultStyledDocument.ElementSpec[] data)
          替换具有给定元素规范的文档内容。
protected  Element createBranchElement(Element parent, AttributeSet a)
          创建文档分支元素,它可以包含其他元素。
protected  AbstractDocument.AbstractElement createDefaultRoot()
          创建用于表示默认文档结构的根元素。
protected  Element createLeafElement(Element parent, AttributeSet a, int p0, int p1)
          创建直接表示文本的文档叶元素(没有任何子级)。
protected  void fireChangedUpdate(DocumentEvent e)
          通知所有需要此事件类型的通知的已注册侦听器。
protected  void fireUndoableEditUpdate(UndoableEditEvent e)
          通知所有需要此事件类型的通知的已注册侦听器。
 URL getBase()
          返回解析相对 URL 所根据的位置。
 Element getElement(Element e, Object attribute, Object value)
          返回 e(它包含具有值 value 的属性 attribute)的子元素,如果未找到,则返回 null
 Element getElement(String id)
          返回具有给定 id Attribute 的元素。
 HTMLDocument.Iterator getIterator(HTML.Tag t)
          获取指定 HTML 标记的迭代器。
 HTMLEditorKit.Parser getParser()
          返回将 HTML 插入现有文档时所使用的解析器。
 boolean getPreservesUnknownTags()
          返回在遇到未知标记时所观察到的解析器行为。
 HTMLEditorKit.ParserCallback getReader(int pos)
          获取加载带有 HTML 的文档时所用解析器的 reader。
 HTMLEditorKit.ParserCallback getReader(int pos, int popDepth, int pushDepth, HTML.Tag insertTag)
          返回加载带有 HTML 的文档时所用解析器的 reader。
 StyleSheet getStyleSheet()
          获取具有特定于文档的显示规则(CSS)的 StyleSheet,其中这些规则是在 HTML 文档本身中指定的。
 int getTokenThreshold()
          获取在试图更新文档元素结构之前要缓冲的标记数。
protected  void insert(int offset, DefaultStyledDocument.ElementSpec[] data)
          批量插入新元素。
 void insertAfterEnd(Element elem, String htmlText)
          将指定为字符串的 HTML 插入给定元素的起始处之后。
 void insertAfterStart(Element elem, String htmlText)
          将指定为字符串的 HTML 插入元素的起始处。
 void insertBeforeEnd(Element elem, String htmlText)
          将指定为字符串的 HTML 插入元素的结尾处。
 void insertBeforeStart(Element elem, String htmlText)
          将指定为字符串的 HTML 插入给定元素的起始处之前。
protected  void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
          由于插入文本而导致更新文档的结构。
 void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)
          处理 HTML 框架中的文档所生成的 HyperlinkEvents
 void setBase(URL u)
          设置解析相对 URL 所根据的位置。
 void setInnerHTML(Element elem, String htmlText)
          用指定为 HTML 字符串的内容替换给定元素的子元素。
 void setOuterHTML(Element elem, String htmlText)
          用指定为 HTML 字符串的内容替换父元素中的给定元素。
 void setParagraphAttributes(int offset, int length, AttributeSet s, boolean replace)
          设置段落属性。
 void setParser(HTMLEditorKit.Parser parser)
          设置将 html 插入现有文档的方法所使用的解析器,例如 setInnerHTMLsetOuterHTML
 void setPreservesUnknownTags(boolean preservesTags)
          确定解析器如何处理未知标记。
 void setTokenThreshold(int n)
          设置在试图更新文档元素结构之前要缓冲的标记数。
 
从类 javax.swing.text.DefaultStyledDocument 继承的方法
addDocumentListener, addStyle, getBackground, getCharacterElement, getDefaultRootElement, getFont, getForeground, getLogicalStyle, getParagraphElement, getStyle, getStyleNames, removeDocumentListener, removeStyle, removeUpdate, setCharacterAttributes, setLogicalStyle, styleChanged
 
从类 javax.swing.text.AbstractDocument 继承的方法
addUndoableEditListener, createPosition, dump, fireInsertUpdate, fireRemoveUpdate, 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
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
从接口 javax.swing.text.Document 继承的方法
addUndoableEditListener, createPosition, getEndPosition, getLength, getProperty, getRootElements, getStartPosition, getText, getText, insertString, putProperty, remove, removeUndoableEditListener, render
 

字段详细信息

AdditionalComments

public static final String AdditionalComments
文档属性键值。键值将是 String 的 Vector,这是正文中没有的注释。

另请参见:
常量字段值
构造方法详细信息

HTMLDocument

public HTMLDocument()
使用默认的缓冲区大小和默认的 StyleSheet 构造 HTML 文档。这是 HTMLDocument(Content, StyleSheet) 构造方法的一个便捷方法。


HTMLDocument

public HTMLDocument(StyleSheet styles)
构造具有默认内容存储实现和指定样式/属性存储机制的 HTML 文档。这是 HTMLDocument(Content, StyleSheet) 构造方法的一个便捷方法。

参数:
styles - 样式

HTMLDocument

public HTMLDocument(AbstractDocument.Content c,
                    StyleSheet styles)
构造具有给定内容存储实现和给定样式/属性存储机制的 HTML 文档。

参数:
c - 内容的容器
styles - 样式
方法详细信息

getReader

public HTMLEditorKit.ParserCallback getReader(int pos)
获取加载带有 HTML 的文档时所用解析器的 reader。实现它的目的是为了返回 HTMLDocument.HTMLReader 的一个实例。如果需要,子类可以重新实现此方法来更改文档获取结构的方式。(例如,处理自定义标记,或者从结构上表示字符样式元素。)

参数:
pos - 起始位置
返回:
解析器用于加载文档的 reader

getReader

public HTMLEditorKit.ParserCallback getReader(int pos,
                                              int popDepth,
                                              int pushDepth,
                                              HTML.Tag insertTag)
返回加载带有 HTML 的文档时所用解析器的 reader。实现它的目的是为了返回 HTMLDocument.HTMLReader 的一个实例。如果需要,子类可以重新实现此方法来更改文档获取结构的方式。(例如,处理自定义标记,或者从结构上表示字符样式元素。)

这是 getReader(int, int, int, HTML.Tag, TRUE) 的一个便捷方法。

参数:
popDepth - 插入前要生成的 ElementSpec.EndTagTypes 的数量
pushDepth - 插入前但生成结束标记之后,应该生成的 ElementSpec.StartTagTypes 的数量(它具有 ElementSpec.JoinNextDirection 方向)
insertTag - 开始插入文档的首个标记
返回:
解析器用于加载文档的 reader

getBase

public URL getBase()
返回解析相对 URL 所根据的位置。默认情况下,如果文档是从 URL 加载的,则这将是文档的 URL。如果找到 BASE 标记并可以对其进行解析,则它将充当基本位置。

返回:
基本位置

setBase

public void setBase(URL u)
设置解析相对 URL 所根据的位置。默认情况下,如果文档是从 URL 加载的,则这将是文档的 URL。如果找到 BASE 标记并可以对其进行解析,则它将充当基本位置。

这还将 StyleSheet 的基本 URL 以及文档的基本 URL 设置为 u

参数:
u - 所需的基本 URL

insert

protected void insert(int offset,
                      DefaultStyledDocument.ElementSpec[] data)
               throws BadLocationException
批量插入新元素。这是在文档中创建元素的方式。通过解析确定所需的结构,并创建作为标记(它描述了编辑)集合的规范,同时保留文档的写入锁定打开。然后 reader 以突发的形式调用此方法,以获得短时(也就是正在实际更改文档时)的写入锁定。

覆盖:
DefaultStyledDocument 中的 insert
参数:
offset - 起始偏移量
data - 元素数据
抛出:
BadLocationException - 如果给定的位置在关联文档中不是一个有效位置。

insertUpdate

protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng,
                            AttributeSet attr)
由于插入文本而导致更新文档的结构。这将在写入锁定中发生。此实现仅解析换行处插入的内容,并构建元素缓冲区的指令集。

覆盖:
DefaultStyledDocument 中的 insertUpdate
参数:
chng - 文档更改的描述
attr - 属性

create

protected void create(DefaultStyledDocument.ElementSpec[] data)
替换具有给定元素规范的文档内容。如果加载是突发进行的,则在插入前调用此方法。如果在一次突发加载中完全加载文档,则这是唯一调用的方法。

覆盖:
DefaultStyledDocument 中的 create
参数:
data - 文档的新内容

setParagraphAttributes

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

虽然大多数 Swing 方法不是线程安全的,但此方法是线程安全的。有关更多信息,请参阅 How to Use Threads

指定者:
接口 StyledDocument 中的 setParagraphAttributes
覆盖:
DefaultStyledDocument 中的 setParagraphAttributes
参数:
offset - 段落中的偏移量(必须至少为 0)
length - 受影响的字符数(必须至少为 0)
s - 属性
replace - 是替换现有属性,还是合并它们

getStyleSheet

public StyleSheet getStyleSheet()
获取具有特定于文档的显示规则(CSS)的 StyleSheet,其中这些规则是在 HTML 文档本身中指定的。

返回:
StyleSheet

getIterator

public HTMLDocument.Iterator getIterator(HTML.Tag t)
获取指定 HTML 标记的迭代器。这可以用于在所包含的点集合上进行迭代,或者在输入元素上进行迭代。

参数:
t - 所请求的 HTML.Tag
返回:
给定 HTML 标记的 Iterator
另请参见:
HTML.Tag

createLeafElement

protected Element createLeafElement(Element parent,
                                    AttributeSet a,
                                    int p0,
                                    int p1)
创建直接表示文本的文档叶元素(没有任何子级)。实现它的目的是为了返回 HTMLDocument.RunElement 类型的元素。

覆盖:
AbstractDocument 中的 createLeafElement
参数:
parent - 父元素
a - 元素属性
p0 - 该范围的开始处(必须至少为 0)
p1 - 该范围的结尾处(必须至少为 p0)
返回:
新元素

createBranchElement

protected Element createBranchElement(Element parent,
                                      AttributeSet a)
创建文档分支元素,它可以包含其他元素。实现它的目的是为了返回 HTMLDocument.BlockElement 类型的元素。

覆盖:
AbstractDocument 中的 createBranchElement
参数:
parent - 父元素
a - 属性
返回:
元素

createDefaultRoot

protected AbstractDocument.AbstractElement createDefaultRoot()
创建用于表示默认文档结构的根元素。

覆盖:
DefaultStyledDocument 中的 createDefaultRoot
返回:
基本元素

setTokenThreshold

public void setTokenThreshold(int n)
设置在试图更新文档元素结构之前要缓冲的标记数。

参数:
n - 要缓冲的标记数

getTokenThreshold

public int getTokenThreshold()
获取在试图更新文档元素结构之前要缓冲的标记数。默认值为 Integer.MAX_VALUE

返回:
要缓冲的标记数

setPreservesUnknownTags

public void setPreservesUnknownTags(boolean preservesTags)
确定解析器如何处理未知标记。如果设置为 true,则将未