java.lang.Object
javax.swing.text.html.HTMLEditorKit.ParserCallback
javax.swing.text.html.HTMLDocument.HTMLReader
- 封闭类:
HTMLDocument
一个 HTML 阅读器,用于加载具有 HTML 元素结构的 HTML 文档。这是一组来自解析器的回调,用于创建一组标有属性的元素。解析构建描述所需元素子树的标记 (ElementSpec),并使用文档外部类上的插入方法在写锁的保护下将其突发到文档中。
可以通过注册描述如何处理操作的操作(HTMLDocument.HTMLReader.TagAction 类型)来配置阅读器。提供的操作背后的想法是,如果元素结构归结为具有某种样式的段落,则可以提供最自然的文本编辑操作。有些东西在结构上更自然地指定,因此段落上方应允许任意结构,但需要使用结构动作进行编辑。这意味着在被解析的流中指定的一些 HTML 元素将被折叠成属性,在某些情况下段落将被合成。当 HTML 元素转换为属性时,属性键的类型为 HTML.Tag,值的类型为 AttributeSet,这样就不会丢失任何信息。这使得许多现有操作能够正常工作,以便用户可以键入输入、按下返回键、退格键、删除等,并获得合理的结果。可以创建选择,应用或删除属性等。考虑到这一点,读者所做的工作可以分为以下几类任务:
- 堵塞
- 像在流中指定的那样构建结构。这会产生包含其他元素的元素。
- 段落
- 与 block 一样,除了预期该元素将与段落视图一起使用,因此不需要合成段落元素。
- Character
- 将元素作为属性提供,该属性将在任意文本位置开始和停止。这最终将混合成一系列文本,其中包含所有当前扁平化的 HTML 字符元素。
- 特别的
- 生成嵌入式图形元素。
- 形式
- 生成一个类似于嵌入式图形元素的元素,除了它还有一个与之关联的组件模型。
- 隐
- 创建一个元素,该元素在以只读方式查看文档时不可见,而在编辑文档时可见。这对于防止模型丢失信息很有用,并用于存储评论和无法识别的标签等内容。
目前不支持<APPLET>、<PARAM>、<MAP>、<AREA>、<LINK>、<SCRIPT>和<STYLE>。
下表针对 HTML.Tag 中定义的标签显示了所描述操作的分配。
| 标签 | Action |
|---|---|
HTML.Tag.A |
CharacterAction |
HTML.Tag.ADDRESS |
CharacterAction |
HTML.Tag.APPLET |
HiddenAction |
HTML.Tag.AREA |
AreaAction |
HTML.Tag.B |
CharacterAction |
HTML.Tag.BASE |
BaseAction |
HTML.Tag.BASEFONT |
CharacterAction |
HTML.Tag.BIG |
CharacterAction |
HTML.Tag.BLOCKQUOTE |
BlockAction |
HTML.Tag.BODY |
BlockAction |
HTML.Tag.BR |
SpecialAction |
HTML.Tag.CAPTION |
BlockAction |
HTML.Tag.CENTER |
BlockAction |
HTML.Tag.CITE |
CharacterAction |
HTML.Tag.CODE |
CharacterAction |
HTML.Tag.DD |
BlockAction |
HTML.Tag.DFN |
CharacterAction |
HTML.Tag.DIR |
BlockAction |
HTML.Tag.DIV |
BlockAction |
HTML.Tag.DL |
BlockAction |
HTML.Tag.DT |
ParagraphAction |
HTML.Tag.EM |
CharacterAction |
HTML.Tag.FONT |
CharacterAction |
HTML.Tag.FORM |
从 1.4 开始,一个 BlockAction |
HTML.Tag.FRAME |
SpecialAction |
HTML.Tag.FRAMESET |
BlockAction |
HTML.Tag.H1 |
ParagraphAction |
HTML.Tag.H2 |
ParagraphAction |
HTML.Tag.H3 |
ParagraphAction |
HTML.Tag.H4 |
ParagraphAction |
HTML.Tag.H5 |
ParagraphAction |
HTML.Tag.H6 |
ParagraphAction |
HTML.Tag.HEAD |
HeadAction |
HTML.Tag.HR |
SpecialAction |
HTML.Tag.HTML |
BlockAction |
HTML.Tag.I |
CharacterAction |
HTML.Tag.IMG |
SpecialAction |
HTML.Tag.INPUT |
FormAction |
HTML.Tag.ISINDEX |
IsndexAction |
HTML.Tag.KBD |
CharacterAction |
HTML.Tag.LI |
BlockAction |
HTML.Tag.LINK |
LinkAction |
HTML.Tag.MAP |
MapAction |
HTML.Tag.MENU |
BlockAction |
HTML.Tag.META |
MetaAction |
HTML.Tag.NOFRAMES |
BlockAction |
HTML.Tag.OBJECT |
SpecialAction |
HTML.Tag.OL |
BlockAction |
HTML.Tag.OPTION |
FormAction |
HTML.Tag.P |
ParagraphAction |
HTML.Tag.PARAM |
HiddenAction |
HTML.Tag.PRE |
PreAction |
HTML.Tag.SAMP |
CharacterAction |
HTML.Tag.SCRIPT |
HiddenAction |
HTML.Tag.SELECT |
FormAction |
HTML.Tag.SMALL |
CharacterAction |
HTML.Tag.STRIKE |
CharacterAction |
HTML.Tag.S |
CharacterAction |
HTML.Tag.STRONG |
CharacterAction |
HTML.Tag.STYLE |
StyleAction |
HTML.Tag.SUB |
CharacterAction |
HTML.Tag.SUP |
CharacterAction |
HTML.Tag.TABLE |
BlockAction |
HTML.Tag.TD |
BlockAction |
HTML.Tag.TEXTAREA |
FormAction |
HTML.Tag.TH |
BlockAction |
HTML.Tag.TITLE |
TitleAction |
HTML.Tag.TR |
BlockAction |
HTML.Tag.TT |
CharacterAction |
HTML.Tag.U |
CharacterAction |
HTML.Tag.UL |
BlockAction |
HTML.Tag.VAR |
CharacterAction |
一旦遇到</html>,就不再通知Actions。
-
内部类总结
内部类修饰符和类型类描述class默认分配的动作,用于处理阅读器的 Block 任务。class默认分配的操作用于处理阅读器的角色任务。class通过构建用于表示表单控件的所有元素来支持表单的操作。class默认分配的操作来处理读者的隐藏任务。class默认分配的操作用于处理读取器的 Isindex 任务。class默认分配的操作用于处理阅读器的段落任务。class默认分配的动作,用于处理阅读器的 Pre block 任务。class默认分配的动作来处理读者的特殊任务。class为响应解析标签而执行的操作。 -
字段摘要
字段修饰符和类型Field描述protected MutableAttributeSet当前字符属性集。protected Vector<DefaultStyledDocument.ElementSpec>缓冲区以保留构建元素。在类 javax.swing.text.html.HTMLEditorKit.ParserCallback 中声明的字段
IMPLIED -
构造方法总结
构造方法构造方法描述HTMLReader(int offset) 使用默认的弹出和推送深度构造一个 HTMLReader 并且没有要插入的标记。HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag insertTag) 构造一个 HTMLReader。 -
方法总结
修饰符和类型方法描述protected voidaddContent(char[] data, int offs, int length) 添加一些具有当前字符属性的文本。protected voidaddContent(char[] data, int offs, int length, boolean generateImpliedPIfNecessary) 添加一些具有当前字符属性的文本。protected void添加基本上完全在属性集中指定的内容。protected void向解析缓冲区添加一条指令以关闭给定类型的块元素。protected voidblockOpen(HTML.Tag t, MutableAttributeSet attr) 向解析缓冲区添加指令以创建具有给定属性的块元素。voidflush()最后一个方法调用了 reader。void这是在流被解析之后但在flush之前调用的。voidhandleEndTag(HTML.Tag t, int pos) 来自解析器的回调。voidhandleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos) 来自解析器的回调。voidhandleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) 来自解析器的回调。voidhandleText(char[] data, int pos) 由解析器调用以指示遇到了一个文本块。protected void从堆栈中弹出先前推送的字符样式以返回到先前的样式。protected voidpreContent(char[] data) 添加在 PRE 元素中遇到的给定内容。protected void将当前字符样式压入堆栈,为形成新的嵌套字符样式做准备。protected void为给定的标签注册一个处理程序。protected voidtextAreaContent(char[] data) 将给定的内容添加到文本区域文档。在类 javax.swing.text.html.HTMLEditorKit.ParserCallback 中声明的方法
handleComment, handleError
-
字段详细信息
-
parseBuffer
缓冲区以保留构建元素。 -
charAttr
当前字符属性集。
-
-
构造方法详细信息
-
阅读器
public HTMLReader(int offset) 使用默认的弹出和推送深度构造一个 HTMLReader 并且没有要插入的标记。- 参数:
offset- 起始偏移量
-
阅读器
构造一个 HTMLReader。- 参数:
offset- 起始偏移量popDepth- 在插入新元素之前提升多少父母pushDepth- 在插入之前有多少父母下降(相对于 popDepth)insertTag- 要插入的标签(可能为空)
-
-
方法详情
-
flush
最后一个方法调用了 reader。它允许将任何挂起的更改刷新到文档中。由于当前正在同步加载,因此此时将推送整组更改。- 重写:
flush在类HTMLEditorKit.ParserCallback中- 抛出:
BadLocationException- 如果给定位置不代表相关文档中的有效位置。
-
handleText
public void handleText(char[] data, int pos) 由解析器调用以指示遇到了一个文本块。- 重写:
handleText在类HTMLEditorKit.ParserCallback中- 参数:
data- 一个数据pos- 一个位置
-
handleStartTag
来自解析器的回调。路由到标签的适当处理程序。- 重写:
handleStartTag在类HTMLEditorKit.ParserCallback中- 参数:
t- 一个 HTML 标签a- 一组属性pos- 一个位置
-
handleEndTag
来自解析器的回调。路由到标签的适当处理程序。- 重写:
handleEndTag在类HTMLEditorKit.ParserCallback中- 参数:
t- 一个 HTML 标签pos- 一个位置
-
handleSimpleTag
来自解析器的回调。路由到标签的适当处理程序。- 重写:
handleSimpleTag在类HTMLEditorKit.ParserCallback中- 参数:
t- 一个 HTML 标签a- 一组属性pos- 一个位置
-
handleEndOfLineString
这是在流被解析之后但在flush之前调用的。eol将是 \n、\r 或 \r\n 之一,在解析流时遇到最多。- 重写:
handleEndOfLineString在类HTMLEditorKit.ParserCallback中- 参数:
eol- 终止值- 自从:
- 1.3
-
registerTag
为给定的标签注册一个处理程序。默认情况下,所有众所周知的标签都已注册。这可用于更改特定标签的处理或添加对自定义标签的支持。- 参数:
t- 一个 HTML 标签a- 标记操作处理程序
-
pushCharacterStyle
protected void pushCharacterStyle()将当前字符样式压入堆栈,为形成新的嵌套字符样式做准备。 -
popCharacterStyle
protected void popCharacterStyle()从堆栈中弹出先前推送的字符样式以返回到先前的样式。 -
textAreaContent
protected void textAreaContent(char[] data) 将给定的内容添加到文本区域文档。当我们处于文本区域上下文中时,将调用此方法。因此,看到的所有文本都属于文本区域,因此被添加到与文本区域关联的 TextAreaDocument。- 参数:
data- 给定的内容
-
preContent
protected void preContent(char[] data) 添加在 PRE 元素中遇到的给定内容。这会合成行来保存文本的运行,并调用 addContent 来实际添加文本。- 参数:
data- 给定的内容
-
blockOpen
向解析缓冲区添加指令以创建具有给定属性的块元素。- 参数:
t- 一个 HTML 标签attr- 属性集
-
blockClose
向解析缓冲区添加一条指令以关闭给定类型的块元素。- 参数:
t- HTML 标签
-
addContent
protected void addContent(char[] data, int offs, int length) 添加一些具有当前字符属性的文本。- 参数:
data- 要添加的内容offs- 初始偏移量length- 长度
-
addContent
protected void addContent(char[] data, int offs, int length, boolean generateImpliedPIfNecessary) 添加一些具有当前字符属性的文本。- 参数:
data- 要添加的内容offs- 初始偏移量length- 长度generateImpliedPIfNecessary- 是否生成隐含段落
-
addSpecialElement
添加基本上完全在属性集中指定的内容。- 参数:
t- 一个 HTML 标签a- 属性集
-