- java.lang.Object
-
- javax.swing.text.AbstractDocument
-
- javax.swing.text.DefaultStyledDocument
-
- javax.swing.text.html.HTMLDocument
-
- All Implemented Interfaces:
-
Serializable
,Document
,StyledDocument
public class HTMLDocument extends DefaultStyledDocument
建立HTML的文档。 此模式的目的是支持浏览和编辑。 因此,由HTML文档描述的结构在默认情况下不会完全复制。 默认建模的元素结构由类HTMLDocument.HTMLReader
构建,该类实现了解析器所期望的HTMLEditorKit.ParserCallback
协议。 要改变结构,可以HTMLReader
,并重新实现方法getReader(int)
以返回新的读者实现。 有关创建的默认结构的详细信息,请参阅HTMLReader
的文档。 意图是文档是无损的(虽然重现HTML格式可能会导致不同的格式)。该文档仅建立HTML,并且不会尝试在其中存储视图属性。 元素由
StyleContext.NameAttribute
属性标识,该属性应始终具有标识元素种类的类型为HTML.Tag
的值。 一些元素(如注释)被合成。HTMLFactory
使用此属性来确定要构建什么样的视图。本文档支持增量加载。
TokenThreshold
属性控制在尝试更新文档的元素结构之前缓冲了多少解析。 该属性由EditorKit
设置,以便子类可以禁用它。Base
属性确定相对URL被解析的URL。 默认情况下,如果该属性的值为URL,Document.StreamDescriptionProperty
。 如果遇到<BASE>标签,基地将成为该标签指定的URL。 因为基本URL是一个属性,它当然可以直接设置。此文档的默认内容存储机制是间隙缓冲区(
GapContent
)。 可以通过使用构建器来提供替代方案,该构造函数采用Content
实现。修改HTMLDocument
除了Document和StyledDocument提供的用于突变HTMLDocument的方法之外,HTMLDocument还提供了一些方便的方法。 可以使用以下方法将HTML内容插入到现有文档中。
-
setInnerHTML(Element, String)
-
setOuterHTML(Element, String)
-
insertBeforeStart(Element, String)
-
insertAfterStart(Element, String)
-
insertBeforeEnd(Element, String)
-
insertAfterEnd(Element, String)
以下示例说明使用这些方法。 每个示例假定HTML文档以以下方式初始化:
JEditorPane p = new JEditorPane(); p.setContentType("text/html"); p.setText("..."); // Document text is provided below. HTMLDocument d = (HTMLDocument) p.getDocument();
使用以下HTML内容:
<html> <head> <title>An example HTMLDocument</title> <style type="text/css"> div { background-color: silver; } ul { color: red; } </style> </head> <body> <div id="BOX"> <p>Paragraph 1</p> <p>Paragraph 2</p> </div> </body> </html>
修改HTML文档的所有方法都需要一个
Element
。 可以使用方法getElement(Element e, Object attribute, Object value)
从HTML文档中获取元素。 它以深度优先顺序返回包含具有给定值的指定属性的第一个后代元素。 例如,d.getElement(d.getDefaultRootElement(), StyleConstants.NameAttribute, HTML.Tag.P)
返回第一个段落元素。定位元素的方便快捷方式是方法
getElement(String)
; 返回一个ID
属性与指定值匹配的元素。 例如,d.getElement("BOX")
返回DIV
元素。getIterator(HTML.Tag t)
方法也可用于查找文档中指定的HTML标记的所有出现。插入元素
可以使用方法
insertAfterStart
和insertBeforeEnd
将元素插入任何非叶元素的现有子元素之前或之后。 例如,如果e
是DIV
元素,d.insertAfterStart(e, "<ul><li>List Item</li></ul>")
插入第一款之前的列表,并d.insertBeforeEnd(e, "<ul><li>List Item</li></ul>")
插入末段后的列表。DIV
块成为新插入元素的父节点。可以使用方法
insertBeforeStart
和insertAfterEnd
在任何元素之前或之后插入兄弟元素。 例如,如果e
是DIV
元素,则d.insertBeforeStart(e, "<ul><li>List Item</li></ul>")
插入列表之前的DIV
元素,而d.insertAfterEnd(e, "<ul><li>List Item</li></ul>")
插入列表后的DIV
元素。 新插入的元素成为DIV
元素的兄弟。更换元素
元素及其后代可以用方法
setInnerHTML
和setOuterHTML
。 例如,如果e
是DIV
元素,则d.setInnerHTML(e, "<ul><li>List Item</li></ul>")
将使用列表替换所有子段落,并且d.setOuterHTML(e, "<ul><li>List Item</li></ul>")
替换DIV
元素本身。 在后一种情况下,列表的父项是BODY
元素。概要
下表显示了上述各种方法的示例文档和结果。
HTML Content of example above ExampleinsertAfterStart
insertBeforeEnd
insertBeforeStart
insertAfterEnd
setInnerHTML
setOuterHTML
Paragraph 1
Paragraph 2
- List Item
Paragraph 1
Paragraph 2
Paragraph 1
Paragraph 2
- List Item
- List Item
Paragraph 1
Paragraph 2
Paragraph 1
Paragraph 2
- List Item
- List Item
- List Item
警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,对所有JavaBeans的长期存储的支持已被添加到
java.beans
包中。 请参阅XMLEncoder
。- 另请参见:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 class
HTMLDocument.BlockElement
表示HTML的结构 块的元素。class
HTMLDocument.HTMLReader
HTML读取器,用于加载HTML元素结构的HTML文档。static class
HTMLDocument.Iterator
迭代器迭代特定类型的标签。class
HTMLDocument.RunElement
表示一组文本的元素,该文本块分配有一组HTML字符级属性。-
Nested classes/interfaces inherited from class javax.swing.text.AbstractDocument
AbstractDocument.AbstractElement, AbstractDocument.AttributeContext, AbstractDocument.BranchElement, AbstractDocument.Content, AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractDocument.LeafElement
-
Nested classes/interfaces inherited from class javax.swing.text.DefaultStyledDocument
DefaultStyledDocument.AttributeUndoableEdit, DefaultStyledDocument.ElementBuffer, DefaultStyledDocument.ElementSpec, DefaultStyledDocument.SectionElement
-
-
Field Summary
Fields Modifier and Type Field 描述 static String
AdditionalComments
文档属性键值。-
Fields inherited from class javax.swing.text.AbstractDocument
BAD_LOCATION, BidiElementName, ContentElementName, ElementNameAttribute, listenerList, ParagraphElementName, SectionElementName
-
Fields inherited from class javax.swing.text.DefaultStyledDocument
buffer, BUFFER_SIZE_DEFAULT
-
Fields inherited from interface javax.swing.text.Document
StreamDescriptionProperty, TitleProperty
-
-
构造方法摘要
构造方法 Constructor 描述 HTMLDocument()
使用默认缓冲区大小和默认值构建HTML文档StyleSheet
。HTMLDocument(AbstractDocument.Content c, StyleSheet styles)
使用给定的内容存储实现和给定的样式/属性存储机制构造一个HTML文档。HTMLDocument(StyleSheet styles)
构造具有默认内容存储实现和指定样式/属性存储机制的HTML文档。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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(String id)
返回给定id为Attribute
的元素。Element
getElement(Element e, Object attribute, Object value)
返回的子元素e
包含属性,attribute
与价值value
或者null
如果一个也没有找到。HTMLDocument.Iterator
getIterator(HTML.Tag t)
获取指定的HTML标签的迭代器。HTMLEditorKit.Parser
getParser()
返回将HTML插入现有文档时使用的解析器。boolean
getPreservesUnknownTags()
返回解析器遇到未知标记时观察到的行为。HTMLEditorKit.ParserCallback
getReader(int pos)
在使用HTML加载文档时,将为读取器提供解析器。HTMLEditorKit.ParserCallback
getReader(int pos, int popDepth, int pushDepth, HTML.Tag insertTag)
返回解析器的读取器,用于使用HTML加载文档。StyleSheet
getStyleSheet()
使用HTML文档本身指定的文档特定显示规则(CSS)获取StyleSheet
。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的方法用于现有文档的解析器,如setInnerHTML
和setOuterHTML
。void
setPreservesUnknownTags(boolean preservesTags)
确定解析器如何处理未知标签。void
setTokenThreshold(int n)
在尝试更新文档元素结构之前,设置要缓冲的令牌数。-
Methods inherited from class 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
-
Methods inherited from class javax.swing.text.DefaultStyledDocument
addDocumentListener, addStyle, getBackground, getCharacterElement, getDefaultRootElement, getFont, getForeground, getLogicalStyle, getParagraphElement, getStyle, getStyleNames, removeDocumentListener, removeElement, removeStyle, removeUpdate, setCharacterAttributes, setLogicalStyle, styleChanged
-
Methods inherited from interface javax.swing.text.Document
addUndoableEditListener, createPosition, getEndPosition, getLength, getProperty, getRootElements, getStartPosition, getText, getText, insertString, putProperty, remove, removeUndoableEditListener, render
-
-
-
-
字段详细信息
-
AdditionalComments
public static final String AdditionalComments
文档属性键值。 键的值将是一个字符串向量,这是在正文中没有发现的注释。- 另请参见:
- Constant Field Values
-
-
构造方法详细信息
-
HTMLDocument
public HTMLDocument()
使用默认缓冲区大小和默认值构建HTML文档StyleSheet
。 这是构造函数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加载文档时,将为读取器提供解析器。 这是为了返回一个HTMLDocument.HTMLReader
的实例。 子类可以重新实现此方法,以便根据需要更改文档的结构。 (例如,处理自定义标签,或结构性地表示字符样式元素。)- 参数
-
pos
- 起始位置 - 结果
- 解析器使用的读取器加载文档
-
getReader
public HTMLEditorKit.ParserCallback getReader(int pos, int popDepth, int pushDepth, HTML.Tag insertTag)
返回解析器的读取器,用于使用HTML加载文档。 这是为了返回一个HTMLDocument.HTMLReader
一个实例。 子类可以重新实现此方法,以便根据需要更改文档的结构。 (例如,处理自定义标签,或结构性地表示字符样式元素。)这是一个方便的方法
getReader(int, int, int, HTML.Tag, TRUE)
。- 参数
-
pos
- 起始位置 -
popDepth
- 插入之前生成的ElementSpec.EndTagTypes
的数量 -
pushDepth
-数量ElementSpec.StartTagTypes
用的方向ElementSpec.JoinNextDirection
应该插入之前生成,但已经生成了结束标记后 -
insertTag
- 开始插入文档的第一个标签 - 结果
- 解析器使用的读取器加载文档
-
getBase
public URL getBase()
返回相对URL的位置。 默认情况下,如果文档是从URL加载的,那将是文档的URL。 如果找到一个基本标签并且可以被解析,它将被用作基本位置。- 结果
- 的基地位置
-
setBase
public void setBase(URL u)
设置解析相对URL的位置。 默认情况下,如果文档是从URL加载的,那将是文档的URL。 如果找到一个基本标签并且可以被解析,它将被用作基本位置。这也设置的基部
StyleSheet
是u
以及文档的基础。- 参数
-
u
- 所需的基本URL
-
insert
protected void insert(int offset, DefaultStyledDocument.ElementSpec[] data) throws BadLocationException
批量插入新元素。 这是元素如何在文档中创建。 解析确定需要什么结构,并将规范创建为描述编辑的一组令牌,同时使文档没有写锁。 然后可以通过读取器在突发中调用该方法以获得较短持续时间的写锁定(即,当文档实际上被改变时)。- 重写:
-
insert
在DefaultStyledDocument
- 参数
-
offset
- 起始偏移量 -
data
- 元素数据 - 异常
-
BadLocationException
- 如果给定的位置不表示相关文档中的有效位置。
-
insertUpdate
protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
更新由于文本插入而导致的文档结构。 这将在写锁中发生。 该实现简单地解析插入的换行内容,并为元素缓冲区建立一组指令。- 重写:
-
insertUpdate
在DefaultStyledDocument
- 参数
-
chng
- 文件更改的说明 -
attr
- 属性
-
create
protected void create(DefaultStyledDocument.ElementSpec[] data)
用给定的元素规格替换文档的内容。 如果加载在突发中完成,则在插入之前调用。 这是唯一的方法,即将文档完全加载到一个突发中。- 重写:
-
create
在DefaultStyledDocument
- 参数
-
data
- 文件的新内容
-
setParagraphAttributes
public void setParagraphAttributes(int offset, int length, AttributeSet s, boolean replace)
设置段落的属性。这种方法是线程安全的,尽管大多数Swing方法都不是。 详情请见Concurrency in Swing 。
- Specified by:
-
setParagraphAttributes
在接口StyledDocument
- 重写:
-
setParagraphAttributes
在DefaultStyledDocument
- 参数
-
offset
- 段落的偏移量(必须至少为0) -
length
- 受影响的字符数(必须至少为0) -
s
- 属性 -
replace
- 是否替换现有属性,还是合并它们
-
getStyleSheet
public StyleSheet getStyleSheet()
使用HTML文档本身指定的文档特定显示规则(CSS)获取StyleSheet
。- 结果
-
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
的元素。- 重写:
-
createLeafElement
在AbstractDocument
- 参数
-
parent
- 父元素 -
a
- 元素的属性 -
p0
- 范围的开始(必须至少为0) -
p1
- 范围的结束(必须至少为p0) - 结果
- 新元素
-
createBranchElement
protected Element createBranchElement(Element parent, AttributeSet a)
创建一个可以包含其他元素的文档分支元素。 这是为了返回一个类型为HTMLDocument.BlockElement
的元素。- 重写:
-
createBranchElement
在AbstractDocument
- 参数
-
parent
- 父元素 -
a
- 属性 - 结果
- 元素
-
createDefaultRoot
protected AbstractDocument.AbstractElement createDefaultRoot()
创建用于表示默认文档结构的根元素。- 重写:
-
createDefaultRoot
在DefaultStyledDocument
- 结果
- 元素基础
-
setTokenThreshold
public void setTokenThreshold(int n)
在尝试更新文档元素结构之前,设置要缓冲的令牌数。- 参数
-
n
- 要缓冲的令牌数
-
getTokenThreshold
public int getTokenThreshold()
在尝试更新文档元素结构之前,获取要缓冲的令牌数。 默认值为Integer.MAX_VALUE
。- 结果
- 要缓冲的令牌数
-
setPreservesUnknownTags
public void setPreservesUnknownTags(boolean preservesTags)
确定解析器如何处理未知标签。 如果设置为true,则将未知标签放入模型中,否则丢弃。- 参数
-
preservesTags
- 如果未知标签应保存在模型中,preservesTags
true,否则标签将被删除 - 另请参见:
-
HTML.Tag
-
getPreservesUnknownTags
public boolean getPreservesUnknownTags()
返回解析器遇到未知标记时观察到的行为。- 结果
- 如果在解析时要保留未知标签,则为true
- 另请参见:
-
HTML.Tag
-
processHTMLFrameHyperlinkEvent
public void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)
由HTML框架中的文档生成的进程HyperlinkEvents
。HyperlinkEvent
类型,正如参数所示,是HTMLFrameHyperlinkEvent
。 除了HyperlinkEvent
包含的典型信息HyperlinkEvent
,此事件还包含与发生点击的帧(源元素)和目标名称相对应的元素。 目标名称有4个可能的值:- _自
- _parent
- _最佳
- 一个命名框架
HTML.Attribute.SRC
属性的值并触发ChangedUpdate
事件。如果目标是_parent,那么它将删除父元素,它是一个<FRAMESET>元素,并插入一个新的<FRAME>元素,并将其值
HTML.Attribute.SRC
属性,其值等于目标网址,然后触发RemovedUpdate
和InsertUpdate
。如果目标是_top,这个方法什么都不做。 在实现框架的视图时,即
FrameView
,处理_top被处理。 由于_top意味着替换整个文档,所以处理它将被替换的文档之外是有意义的。如果目标是一个命名的框架,那么将搜索一个名称等于目标的元素的元素层次结构,其
HTML.Attribute.SRC
属性将被更新,并ChangedUpdate
一个ChangedUpdate
事件。- 参数
-
e
- 事件
-
setParser
public void setParser(HTMLEditorKit.Parser parser)
将插入html的方法使用的解析器设置为现有文档,如setInnerHTML
和setOuterHTML
。HTMLEditorKit.createDefaultDocument
将为您设置解析器。 如果您手动创建了一个HTMLDocument
,请确保并相应地设置解析器。- 参数
-
parser
- 用于文本插入的解析器 - 从以下版本开始:
- 1.3
-
getParser
public HTMLEditorKit.Parser getParser()
返回将HTML插入现有文档时使用的解析器。- 结果
- 解析器用于文本插入
- 从以下版本开始:
- 1.3
-
setInnerHTML
public void setInnerHTML(Element elem, String htmlText) throws BadLocationException, IOException
用指定为HTML字符串的内容替换给定元素的子元素。这将被视为至少两个事件,n个插入后跟一个删除。
考虑以下结构(
elem
参数为粗体 )。<body> | <div> / \ * <p> <p>
调用
setInnerHTML(elem, "<ul><li>")
导致以下结构(新元素为红色 )。<body> | <div> \ * <ul> \ * <li>
参数
elem
不能是一个叶子元素,否则抛出一个IllegalArgumentException
。 如果elem
或htmlText
参数为null
,则不会更改文档。为了正常工作,文档必须设置一个
HTMLEditorKit.Parser
。 如果文档是通过createDefaultDocument
方法从HTMLEditorKit创建的,则将是这种情况。- 参数
-
elem
- 其子代被替换的分支元素 -
htmlText
- 要解析并分配给elem
的字符串 - 异常
-
IllegalArgumentException
- 如果elem
是叶 -
IllegalStateException
- 如果尚未定义HTMLEditorKit.Parser
-
BadLocationException
- 如果由于结构问题而不可能更换 -
IOException
- 如果发生I / O异常 - 从以下版本开始:
- 1.3
-
setOuterHTML
public void setOuterHTML(Element elem, String htmlText) throws BadLocationException, IOException
用指定为HTML字符串的内容替换父项中的给定元素。这将被视为至少两个事件,n个插入后跟一个删除。
当替换叶子时,如果需要,将尝试确保存在换行符。 这可能导致插入另外的元素。 考虑一下,如果要用<img>替换包含换行符的字符元素,则会创建两个元素,一个用于图像,另一个用于换行。
如果您尝试更换元素,您最有可能会
setOuterHTML(getCharacterElement (getLength()), "blah")
两个元素,例如setOuterHTML(getCharacterElement (getLength()), "blah")
将导致最后两个元素,一个表示“blah”,另一个表示最终元素。考虑以下结构(
elem
参数为粗体 )。<body> | <div> / \ * <p> <p>
调用
setOuterHTML(elem, "<ul><li>")
导致以下结构(新元素为红色 )。<body> | <ul> \ * <li>
如果
elem
或htmlText
参数为null
,则不会更改文档。为了正常工作,该文档必须具有HTMLEditorKit.Parser集。 如果通过
createDefaultDocument
方法从HTMLEditorKit创建文档,则将是这种情况。- 参数
-
elem
- 要替换的元素 -
htmlText
- 要解析并插入的字符串代替elem
- 异常
-
IllegalStateException
- 如果尚未设置HTMLEditorKit.Parser -
BadLocationException
- 如果由于结构性问题而不可能更换 -
IOException
- 如果发生I / O异常 - 从以下版本开始:
- 1.3
-
insertAfterStart
public void insertAfterStart(Element elem, String htmlText) throws BadLocationException, IOException
在元素的开始处插入指定为字符串的HTML。考虑以下结构(
elem
参数为粗体 )。<body> | <div> / \ * <p> <p>
调用
insertAfterStart(elem, "<ul><li>")
导致以下结构(新元素为红色 )。<body> | <div> / | \ * <ul> <p> <p> / <li>
与
insertBeforeStart
方法不同,新元素成为指定元素的子代 ,而不是兄弟。参数
elem
不能是一个叶子元素,否则抛出一个IllegalArgumentException
。 如果elem
或htmlText
参数为null
,则不会更改文档。为了正常工作,文档必须有一个
HTMLEditorKit.Parser
集。 如果文档是通过createDefaultDocument
方法从HTMLEditorKit创建的,则将是这种情况。- 参数
-
elem
- 分支元素作为新文本的根 -
htmlText
- 要解析并分配给elem
的字符串 - 异常
-
IllegalArgumentException
- 如果elem
是叶 -
IllegalStateException
- 如果文档上尚未设置HTMLEditorKit.Parser -
BadLocationException
- 如果由于结构问题插入是不可能的 -
IOException
- 如果发生I / O异常 - 从以下版本开始:
- 1.3
-
insertBeforeEnd
public void insertBeforeEnd(Element elem, String htmlText) throws BadLocationException, IOException
在元素的末尾插入指定为字符串的HTML。如果
elem
的孩子是叶子,而一个elem.getEndOffset() - 1
的字符是换行符,这将插入到换行符之前,以便在换行符之后没有文本。考虑以下结构(
elem
参数为粗体 )。<body> | <div> / \ * <p> <p>
调用
insertBeforeEnd(elem, "<ul><li>")
导致以下结构(新元素为红色 )。<body> | <div> / | \ * <p> <p> <ul> \ * <li>
与
insertAfterEnd
方法不同,新元素成为指定元素的子代 ,而不是兄弟。参数
elem
不能是一个叶元素,否则抛出一个IllegalArgumentException
。 如果elem
或htmlText
参数为null
,则不会更改文档。为了正常工作,文档必须有一个
HTMLEditorKit.Parser
集。 如果文档是通过createDefaultDocument
方法从HTMLEditorKit创建的,则将是这种情况。- 参数
-
elem
- 要作为新文本根的元素 -
htmlText
- 要解析并分配给elem
的字符串 - 异常
-
IllegalArgumentException
- 如果elem
是叶 -
IllegalStateException
- 如果文档上尚未设置HTMLEditorKit.Parser -
BadLocationException
- 如果由于结构问题插入是不可能的 -
IOException
- 如果发生I / O异常 - 从以下版本开始:
- 1.3
-
insertBeforeStart
public void insertBeforeStart(Element elem, String htmlText) throws BadLocationException, IOException
在给定元素开始之前插入指定为字符串的HTML。考虑以下结构(
elem
参数为粗体 )。<body> | <div> / \ * <p> <p>
调用
insertBeforeStart(elem, "<ul><li>")
导致以下结构(新元素为红色 )。<body> / \ * <ul> <div> / / \ * <li> <p> <p>
与
insertAfterStart
方法不同,新元素成为指定元素的兄弟 ,而不是子元素。如果
elem
或htmlText
参数为null
,则不会更改文档。为了正常工作,该文档必须具有
HTMLEditorKit.Parser
集。 如果文档是通过createDefaultDocument
方法从HTMLEditorKit创建的,则将是这种情况。- 参数
-
elem
- 内容插入之前的元素 -
htmlText
- 要解析并在elem
之前插入的字符串 - 异常
-
IllegalStateException
- 如果文档上没有设置HTMLEditorKit.Parser -
BadLocationException
- 如果由于结构问题插入是不可能的 -
IOException
- 如果发生I / O异常 - 从以下版本开始:
- 1.3
-
insertAfterEnd
public void insertAfterEnd(Element elem, String htmlText) throws BadLocationException, IOException
在给定元素结束后插入指定为字符串的HTML。考虑以下结构(
elem
参数为粗体 )。<body> | <div> / \ * <p> <p>
调用
insertAfterEnd(elem, "<ul><li>")
导致以下结构(新元素为红色 )。<body> / \ * <div> <ul> / \ \ * <p> <p> <li>
与
insertBeforeEnd
方法不同,新元素成为指定元素的兄弟 ,而不是子元素。如果
elem
或htmlText
参数为null
,则不会更改文档。为了正常工作,文档必须有一个
HTMLEditorKit.Parser
集。 如果文档是通过createDefaultDocument
方法从HTMLEditorKit创建的,则将是这种情况。- 参数
-
elem
- 内容插入后的元素 -
htmlText
-elem
后要解析和插入的字符串 - 异常
-
IllegalStateException
- 如果文档上尚未设置HTMLEditorKit.Parser -
BadLocationException
- 如果由于结构问题插入是不可能的 -
IOException
- 如果发生I / O异常 - 从以下版本开始:
- 1.3
-
getElement
public Element getElement(String id)
返回给定id为Attribute
的元素。 如果找不到该元素,则返回null
。 请注意,此方法适用于Attribute
, 而不是字符标记。 在以下HTML片段中:<a id="HelloThere">
属性为“id”,字符标记为“a”。 这是一个方便的方法getElement(RootElement, HTML.Attribute.id, id)
。 这不是线程安全的。- 参数
-
id
- 表示所需的字符串Attribute
- 结果
-
该元素具有指定的
Attribute
或null
如果无法找到,或null
如果id
为null
- 从以下版本开始:
- 1.3
- 另请参见:
-
HTML.Attribute
-
getElement
public Element getElement(Element e, Object attribute, Object value)
返回的子元素e
包含属性,attribute
与价值value
或者null
如果一个也没有找到。 这不是线程安全的。- 参数
-
e
- 搜索开始的根元素 -
attribute
- 所需的Attribute
-
value
- 指定的Attribute
- 结果
-
该元素具有指定的
Attribute
和指定的value
或null
如果无法找到 - 从以下版本开始:
- 1.3
- 另请参见:
-
HTML.Attribute
-
fireChangedUpdate
protected void fireChangedUpdate(DocumentEvent e)
通知所有在此事件类型上通知有兴趣的听众。 事件实例使用传递给fire方法的参数进行懒惰创建。- 重写:
-
fireChangedUpdate
在AbstractDocument
- 参数
-
e
- 事件 - 另请参见:
-
EventListenerList
-
fireUndoableEditUpdate
protected void fireUndoableEditUpdate(UndoableEditEvent e)
通知所有在此事件类型上通知有兴趣的听众。 事件实例使用传递给fire方法的参数进行懒惰创建。- 重写:
-
fireUndoableEditUpdate
在AbstractDocument
- 参数
-
e
- 事件 - 另请参见:
-
EventListenerList
-
-