java.lang.Object
javax.swing.text.html.HTMLEditorKit.ParserCallback
javax.swing.text.html.HTMLDocument.HTMLReader
- 封装类:
-
HTMLDocument
用于加载具有HTML元素结构的HTML文档的HTML阅读器。这是从解析器的一组回调中实现的,用于创建带有属性标记的元素集。解析构建描述所需元素子树的标记(ElementSpec),并在文档的保护下使用文档外部类上的insert方法将其插入文档中。
阅读器可以通过注册操作(类型为HTMLDocument.HTMLReader.TagAction)来配置,描述如何处理操作。提供的操作背后的想法是,如果元素结构归结为包含某种样式运行的段落,则可以提供最自然的文本编辑操作。有些事情在结构上更自然地指定,因此应允许在段落之上允许任意结构,但将需要使用结构操作进行编辑。这意味着在解析的流中指定的一些HTML元素将被折叠为属性,在某些情况下将合成段落。当HTML元素转换为属性时,属性键将是HTML.Tag类型,值将是AttributeSet类型,以便不会丢失任何信息。这使得许多现有操作可以正常工作,用户可以输入文本,按回车键,退格,删除等,并获得合理的结果。可以创建选择,应用或删除属性等。考虑到这一点,阅读器完成的工作可以归类为以下几种任务:
- 块
- 像在流中指定的那样构建结构。这会产生包含其他元素的元素。
- 段落
- 与块类似,只是预期该元素将与段落视图一起使用,因此不需要合成段落元素。
- 字符
- 将元素作为在任意文本位置开始和停止的属性。这最终将混合到文本运行中,其中包含当前所有已展平的HTML字符元素。
- 特殊
- 生成嵌入的图形元素。
- 表单
- 生成类似于嵌入的图形元素的元素,只是它还具有与之关联的组件模型。
- 隐藏
- 创建一个在查看文档时处于隐藏状态,而在编辑文档时可见的元素。这对于防止模型丢失信息很有用,并用于存储诸如注释和未识别标记之类的内容。
目前不支持<APPLET>, <PARAM>, <MAP>, <AREA>, <LINK>, <SCRIPT>和<STYLE>。
为在HTML.Tag中定义的标记分配的操作如下表所示。
| 标记 | 操作 |
|---|---|
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>,操作将不再被通知。
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclass默认分配给处理阅读器块任务的操作。class默认分配给处理阅读器字符任务的操作。class通过构建用于表示表单控件的所有元素来支持表单的操作。class默认分配给处理阅读器隐藏任务的操作。class默认分配给处理阅读器Isindex任务的操作。class默认分配给处理阅读器段落任务的操作。class默认分配给处理阅读器Pre块任务的操作。class默认分配给处理阅读器特殊任务的操作。class响应解析标记执行的操作。 -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected MutableAttributeSet当前字符属性集。protected Vector<DefaultStyledDocument.ElementSpec> 保持构建元素的缓冲区。Fields declared in class javax.swing.text.html.HTMLEditorKit.ParserCallback
IMPLIED -
Constructor Summary
ConstructorsConstructorDescriptionHTMLReader(int offset) 使用默认弹出和推送深度以及不插入标记构造HTMLReader。HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag insertTag) 构造HTMLReader。 -
Method Summary
Modifier and TypeMethodDescriptionprotected 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()读取器上调用的最后一个方法。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) 将给定内容添加到文本区域文档中。Methods declared in class javax.swing.text.html.HTMLEditorKit.ParserCallback
handleComment, handleError
-
Field Details
-
parseBuffer
用于保持构建元素的缓冲区。 -
charAttr
当前字符属性集。
-
-
Constructor Details
-
HTMLReader
public HTMLReader(int offset) 使用默认的弹出和推送深度以及不插入标签来构造HTMLReader。- 参数:
-
offset- 起始偏移量
-
HTMLReader
构造一个HTMLReader。- 参数:
-
offset- 起始偏移量 -
popDepth- 在插入新元素之前上升多少个父级 -
pushDepth- 在插入之前下降多少个父级(相对于popDepth) -
insertTag- 要插入的标签(可能为null)
-
-
Method Details
-
flush
读取器上调用的最后一个方法。允许将任何挂起的更改刷新到文档中。由于当前是同步加载,因此在此时推入整套更改。- 覆盖:
-
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- 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- 属性集
-