java.lang.Object
javax.swing.text.EditorKit
javax.swing.text.DefaultEditorKit
javax.swing.text.StyledEditorKit
javax.swing.text.html.HTMLEditorKit
- 所有已实现的接口:
Serializable,Cloneable,Accessible
Swing JEditorPane 文本组件通过称为 EditorKit 的插件机制支持不同类型的内容。因为 HTML 是一种非常流行的内容格式,所以默认提供了一些支持。默认支持由此类提供,它支持 HTML 3.2 版(带有一些扩展),并且正在向 4.0 版迁移。不支持 <applet> 标签,但为 <object> 标签提供了一些支持。
提供的 HTML EditorKit 有几个目标,它们对 HTML 的建模方式有影响。这些都在很大程度上影响了它的设计。
- 支持编辑
-
JEditorPane 的插件应该提供编辑支持似乎相当明显,但这一事实有几个设计考虑因素。有大量的 HTML 文档不符合 HTML 规范。如果要编辑它们,必须将它们标准化为正确的形式。此外,用户不喜欢过多的结构编辑,因此使用传统的文本编辑手势优于使用完全按照 HTML 文档中定义的 HTML 结构。
HTML 的建模由类
HTMLDocument提供。它的文档描述了 HTML 是如何建模的细节。编辑支持在很大程度上利用了文本包。 - 可扩展/可缩放
-
为了最大限度地发挥该套件的实用性,我们付出了大量努力使其可扩展。这些是一些功能。
- 解析器是可替换的。默认解析器是基于 DTD 的 Hot Java 解析器。可以使用不同的 DTD,或者可以使用完全不同的解析器。要更改解析器,请重新实现 getParser 方法。默认解析器在首次请求时动态加载,因此如果使用替代解析器,则永远不会加载类文件。默认解析器位于此包下方的名为 parser 的单独包中。
- 解析器驱动由 HTMLDocument 提供的 ParserCallback。要更改回调,子类化 HTMLDocument 并重新实现 createDefaultDocument 方法以返回生成不同阅读器的文档。读者控制文档的结构。尽管 Document 默认提供 HTML 支持,但没有什么可以阻止对非 HTML 标记的支持,这些标记会导致替代元素结构。
- 模型的默认视图作为 View 实现的层次结构提供,因此可以轻松自定义特定元素的显示方式或通过提供新的 View 实现来为新类型的元素添加功能。默认的视图集由
HTMLFactory类提供。这可以通过子类化或替换 HTMLFactory 并重新实现 getViewFactory 方法以返回替代工厂来轻松更改。 - View 实现主要依靠 CSS 属性工作,这些属性保存在视图中。这使得可以将多个视图映射到看起来大不相同的同一模型上。这对于打印特别有用。对于大多数 HTML 属性,HTML 属性会转换为 CSS 属性进行显示。这有助于使 View 实现更通用
- 异步加载
-
较大的文档涉及大量解析并需要一些时间来加载。默认情况下,此工具包生成的文档将在使用
JEditorPane.setPage加载时异步加载。这是由文档上的属性控制的。可以重写方法createDefaultDocument来改变它。工作的批处理由HTMLDocument.HTMLReader类完成。实际工作由 text 包中的DefaultStyledDocument和AbstractDocument类完成。 - 从当前 LAF 定制
-
HTML 提供了一组众所周知的特性,但没有准确指定显示特性。 Swing 有一个用于其外观实现的主题机制。外观需要将显示特性提供给 HTML 视图。例如,视力不佳的用户会想要高对比度和比典型字体更大的字体。
对此的支持由
StyleSheet类提供。 HTML 的呈现在很大程度上受 EditorKit 上 StyleSheet 属性设置的影响。 - 无损
- EditorKit 具有读取和保存文档的能力。如果两次操作之间没有数据丢失,通常是最令用户满意的。 HTMLEditorKit 的策略是存储无法识别或不一定可见的内容,以便随后可以将它们写出。因此,HTML 文档的模型应该包含阅读文档时发现的所有信息。这在某些方面受到支持编辑的需要的限制(即有时必须规范化不正确的文档)。指导原则是信息不应丢失,但可能会合成一些信息以生成更正确的模型,或者可能会对其进行重新排列。
-
内部类总结
内部类修饰符和类型类描述static class为 HTML 构建视图的工厂。static class一个抽象的 Action 提供了一些方便的方法,这些方法可能对将 HTML 插入到现有文档中很有用。static classInsertHTMLTextAction 可用于将任意 HTML 字符串插入现有的 HTML 文档中。static class监视关联组件的类,并在适当时触发其上的超链接事件。static class解析器要支持的接口。static class解析的结果驱动这些回调方法。在类 javax.swing.text.StyledEditorKit 中声明的嵌套类/接口
StyledEditorKit.AlignmentAction, StyledEditorKit.BoldAction, StyledEditorKit.FontFamilyAction, StyledEditorKit.FontSizeAction, StyledEditorKit.ForegroundAction, StyledEditorKit.ItalicAction, StyledEditorKit.StyledTextAction, StyledEditorKit.UnderlineAction在类 javax.swing.text.DefaultEditorKit 中声明的嵌套类/接口
DefaultEditorKit.BeepAction, DefaultEditorKit.CopyAction, DefaultEditorKit.CutAction, DefaultEditorKit.DefaultKeyTypedAction, DefaultEditorKit.InsertBreakAction, DefaultEditorKit.InsertContentAction, DefaultEditorKit.InsertTabAction, DefaultEditorKit.PasteAction -
字段摘要
字段修饰符和类型Field描述static final String粗体动作标识符static final String颜色选择动作标识符颜色作为参数传递static final String设置标签视图的默认级联样式表文件。static final String字体大小增加到下一个值动作标识符static final String字体大小减小到下一个值动作标识符static final String在底部对齐图像。static final String在中间对齐图像。static final String在顶部对齐图像。static final String在边界对齐图像。static final String斜体动作标识符static final StringThe logical style choice action identifier逻辑风格作为参数传入static final String段落左缩进动作标识符static final String段落右缩进动作标识符在类 javax.swing.text.DefaultEditorKit 中声明的字段
backwardAction, beepAction, beginAction, beginLineAction, beginLineUpAction, beginParagraphAction, beginWordAction, copyAction, cutAction, defaultKeyTypedAction, deleteNextCharAction, deleteNextWordAction, deletePrevCharAction, deletePrevWordAction, downAction, endAction, endLineAction, endLineDownAction, EndOfLineStringProperty, endParagraphAction, endWordAction, forwardAction, insertBreakAction, insertContentAction, insertTabAction, nextWordAction, pageDownAction, pageUpAction, pasteAction, previousWordAction, readOnlyAction, selectAllAction, selectionBackwardAction, selectionBeginAction, selectionBeginLineAction, selectionBeginParagraphAction, selectionBeginWordAction, selectionDownAction, selectionEndAction, selectionEndLineAction, selectionEndParagraphAction, selectionEndWordAction, selectionForwardAction, selectionNextWordAction, selectionPreviousWordAction, selectionUpAction, selectLineAction, selectParagraphAction, selectWordAction, upAction, writableAction -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述clone()创建编辑器工具包的副本。创建适合此类编辑器的未初始化文本存储模型。protected voidcreateInputAttributes(Element element, MutableAttributeSet set) 将elements AttributeSet 中的键/值复制到set中。void从 JEditorPane 中删除工具包时调用。返回与此编辑器工具包关联的 AccessibleContextAction[]获取编辑器的命令列表。获取此工具包表示支持的数据的 MIME 类型。返回默认游标。获取用于样式化编辑操作的输入属性。返回要在超链接上使用的光标。protected HTMLEditorKit.Parser获取用于读取 HTML 流的解析器。获取当前用于呈现 HTML 元素的样式集。获取适合生成此套件生成的任何模型的视图的工厂。voidinsertHTML(HTMLDocument doc, int offset, String html, int popDepth, int pushDepth, HTML.Tag insertTag) 将 HTML 插入现有文档。void在将工具包安装到 JEditorPane 时调用。boolean指示 html 表单提交是自动处理还是仅触发FormSubmitEvent。void插入给定流中的内容。voidsetAutoFormSubmission(boolean isAuto) 指定是自动处理 html 表单提交还是仅触发FormSubmitEvent。voidsetDefaultCursor(Cursor cursor) 设置默认光标。voidsetLinkCursor(Cursor cursor) 将光标设置为在链接上使用。void设置用于呈现各种 HTML 元素的样式集。void以适合此类内容处理程序的格式将文档中的内容写入给定流。在类 javax.swing.text.StyledEditorKit 中声明的方法
getCharacterAttributeRun在类 javax.swing.text.DefaultEditorKit 中声明的方法
createCaret, read, write
-
字段详细信息
-
DEFAULT_CSS
设置标签视图的默认级联样式表文件。- 参见:
-
BOLD_ACTION
粗体动作标识符- 参见:
-
ITALIC_ACTION
斜体动作标识符- 参见:
-
PARA_INDENT_LEFT
段落左缩进动作标识符- 参见:
-
PARA_INDENT_RIGHT
段落右缩进动作标识符- 参见:
-
FONT_CHANGE_BIGGER
字体大小增加到下一个值动作标识符- 参见:
-
FONT_CHANGE_SMALLER
字体大小减小到下一个值动作标识符- 参见:
-
COLOR_ACTION
颜色选择动作标识符颜色作为参数传递- 参见:
-
LOGICAL_STYLE_ACTION
The logical style choice action identifier逻辑风格作为参数传入- 参见:
-
IMG_ALIGN_TOP
在顶部对齐图像。- 参见:
-
IMG_ALIGN_MIDDLE
在中间对齐图像。- 参见:
-
IMG_ALIGN_BOTTOM
在底部对齐图像。- 参见:
-
IMG_BORDER
在边界对齐图像。- 参见:
-
-
构造方法详细信息
-
HTMLEditorKit
public HTMLEditorKit()构造一个 HTMLEditorKit,创建一个 StyleContext,并加载样式表。
-
-
方法详情
-
getContentType
获取此工具包表示支持的数据的 MIME 类型。该套件支持text/html类型。- 重写:
getContentType在类DefaultEditorKit中- 返回:
- 方式
-
getViewFactory
获取适合生成此套件生成的任何模型的视图的工厂。- 重写:
getViewFactory在类StyledEditorKit中- 返回:
- 工厂
-
createDefaultDocument
创建适合此类编辑器的未初始化文本存储模型。- 重写:
createDefaultDocument在类StyledEditorKit中- 返回:
- 该模型
-
read
插入给定流中的内容。如果doc是 HTMLDocument 的一个实例,这将读取 HTML 3.2 文本。向非空文档中插入 HTML 必须在 body 元素内部,如果不插入到 body 中将抛出异常。当插入到非空文档中时,正文之外的所有标签(head、title)都将被删除。- 重写:
read在类DefaultEditorKit中- 参数:
in- 要读取的流doc- 插入的目的地pos- 文档中放置内容的位置- 抛出:
IOException- 出现任何 I/O 错误BadLocationException- 如果 pos 表示文档中的无效位置RuntimeException- (最终将是 BadLocationException)如果 pos 无效
-
insertHTML
public void insertHTML(HTMLDocument doc, int offset, String html, int popDepth, int pushDepth, HTML.Tag insertTag) throws BadLocationException , IOException 将 HTML 插入现有文档。- 参数:
doc- 要插入的文档offset- 插入 HTML 的偏移量html- HTML 字符串popDepth- 插入前要生成的 ElementSpec.EndTagType 的数量pushDepth- 方向为 ElementSpec.JoinNextDirection 的 ElementSpec.StartTagType 的数量,应该在插入之前生成,但在生成结束标记之后insertTag- 开始插入文档的第一个标签- 抛出:
BadLocationException- 如果offset无效IOException- I/O 错误RuntimeException- (最终将是 BadLocationException)如果 pos 无效
-
write
public void write(Writer out, Document doc, int pos, int len) throws IOException , BadLocationException 以适合此类内容处理程序的格式将文档中的内容写入给定流。- 重写:
write在类DefaultEditorKit中- 参数:
out- 要写入的流doc- 写入源pos- 文档中获取内容的位置len- 写出的数量- 抛出:
IOException- 出现任何 I/O 错误BadLocationException- 如果pos表示文档中的无效位置
-
install
在将工具包安装到 JEditorPane 时调用。- 重写:
install在类StyledEditorKit中- 参数:
c- JEditorPane
-
deinstall
从 JEditorPane 中删除工具包时调用。这用于注销任何附加的监听。- 重写:
deinstall在类StyledEditorKit中- 参数:
c- JEditorPane
-
setStyleSheet
设置用于呈现各种 HTML 元素的样式集。这些样式是根据 CSS 规范指定的。该工具包生成的每个文档都将有一个工作表副本,它可以向其中添加文档特定样式。默认情况下,指定的样式表由所有 HTMLEditorKit 实例共享。如果需要,这应该重新实现以提供更精细的粒度。- 参数:
s- 样式表
-
getStyleSheet
获取当前用于呈现 HTML 元素的样式集。默认情况下,由 DEFAULT_CSS 指定的资源被加载,并被所有 HTMLEditorKit 实例共享。- 返回:
- 样式表
-
getActions
获取编辑器的命令列表。这是由为样式操作在本地定义的命令集合扩充的超类支持的命令列表。- 重写:
getActions在类StyledEditorKit中- 返回:
- 命令列表
-
createInputAttributes
将elements AttributeSet 中的键/值复制到set中。这不会复制组件、图标或元素名称属性。子类可能希望改进此处复制的内容和未复制的内容。但一定要先删除set中的所有属性。只要插入符移过不同位置,就会调用此方法。
- 重写:
createInputAttributes在类StyledEditorKit中- 参数:
element- 元素set- 属性
-
getInputAttributes
获取用于样式化编辑操作的输入属性。- 重写:
getInputAttributes在类StyledEditorKit中- 返回:
- 属性集
-
setDefaultCursor
设置默认光标。- 参数:
cursor- 游标- 自从:
- 1.3
-
getDefaultCursor
返回默认游标。- 返回:
- 游标
- 自从:
- 1.3
-
setLinkCursor
将光标设置为在链接上使用。- 参数:
cursor- 游标- 自从:
- 1.3
-
getLinkCursor
返回要在超链接上使用的光标。- 返回:
- 游标
- 自从:
- 1.3
-
isAutoFormSubmission
public boolean isAutoFormSubmission()指示 html 表单提交是自动处理还是仅触发FormSubmitEvent。- 返回:
- 如果自动处理 html 表单提交,则为 true,否则为 false。
- 自从:
- 1.5
- 参见:
-
setAutoFormSubmission
public void setAutoFormSubmission(boolean isAuto) 指定是自动处理 html 表单提交还是仅触发FormSubmitEvent。默认情况下,它设置为 true。- 参数:
isAuto- 如果true,自动处理 html 表单提交。- 自从:
- 1.5
- 参见:
-
clone
创建编辑器工具包的副本。- 重写:
clone在类StyledEditorKit中- 返回:
- 副本
- 参见:
-
getParser
获取用于读取 HTML 流的解析器。这可以重新实现以提供不同的解析器。默认实现是动态加载的,以避免在不使用时加载默认解析器的开销。默认解析器是使用 HTML 3.2 DTD 的 HotJava 解析器。- 返回:
- 解析器
-
getAccessibleContext
返回与此编辑器工具包关联的 AccessibleContext- 指定者:
getAccessibleContext在接口Accessible中- 返回:
- 与此编辑器工具包关联的 AccessibleContext
- 自从:
- 1.4
-