- 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)
以返回新的读取器实现。 有关创建的默认结构的详细信息,请参阅HTMLReader
的文档。 目的是文档是无损的(尽管再现HTML格式可能导致不同的格式)。该文档仅模拟HTML,并且不会尝试在其中存储视图属性。 元素由
StyleContext.NameAttribute
属性标识,该属性应始终具有标识元素类型的类型HTML.Tag
的值。 一些元素(例如注释)被合成。HTMLFactory
使用此属性来确定要构建的视图类型。本文档支持增量加载。
TokenThreshold
属性控制在尝试更新文档的元素结构之前缓冲了多少解析。 此属性由EditorKit
设置,以便子类可以禁用它。Base
属性确定用于解析相对URL的URL。 默认情况下,如果属性的值是URL,Document.StreamDescriptionProperty
。 如果遇到<BASE>标记,则base将成为该标记指定的URL。 因为基本URL是属性,所以它当然可以直接设置。此文档的默认内容存储机制是间隙缓冲区(
GapContent
)。 可以使用实现Content
的构造函数来提供替代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: blue; } </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开始,
java.beans
软件包中添加了对所有JavaBeansjava.beans
长期存储的支持。 请参阅XMLEncoder
。- 另请参见:
- Serialized Form
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 class
HTMLDocument.BlockElement
表示HTML结构 块的元素。class
HTMLDocument.HTMLReader
用于加载带有HTML元素结构的HTML文档的HTML阅读器。static class
HTMLDocument.Iterator
迭代特定类型标记的迭代器。class
HTMLDocument.RunElement
表示一组文本的元素,该文本具有分配给它的一组HTML字符级属性。
-
字段汇总
字段 变量和类型 字段 描述 static String
AdditionalComments
文档属性键值。-
声明的属性在类 javax.swing.text.DefaultStyledDocument
buffer, BUFFER_SIZE_DEFAULT
-
声明的属性在类 javax.swing.text.AbstractDocument
BAD_LOCATION, BidiElementName, ContentElementName, ElementNameAttribute, listenerList, ParagraphElementName, SectionElementName
-
Fields declared in interface 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(String id)
返回具有给定idAttribute
的元素。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)
在尝试更新文档元素结构之前设置要缓冲的标记数。-
声明方法的类 javax.swing.text.DefaultStyledDocument
addDocumentListener, addStyle, getBackground, getCharacterElement, getDefaultRootElement, getFont, getForeground, getLogicalStyle, getParagraphElement, getStyle, getStyleNames, removeDocumentListener, removeElement, 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
-
-
-
-
构造方法详细信息
-
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加载文档时使用。 实现此方法是为了返回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
属性设置为具有等于目标URL的值,并触发RemovedUpdate
和InsertUpdate
。如果目标是_top,则此方法不执行任何操作。 在帧的视图的实现中,即
FrameView
,处理_top的处理。 鉴于_top意味着替换整个文档,因此在文档之外处理它将替换它是有意义的。如果目标是命名框架,则在元素层次结构中搜索名称等于目标的元素,更新其
HTML.Attribute.SRC
属性并触发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")
将在结尾处产生两个叶元素,一个代表'blah',另一个代表end元素。请考虑以下结构(
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
是叶子,并且elem.getEndOffset() - 1
处的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)
返回具有给定标识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
,如果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
-
-