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的单独包中。
- 解析器驱动ParserCallback,由HTMLDocument提供。要更改回调,请对HTMLDocument进行子类化,并重新实现createDefaultDocument方法以返回生成不同读取器的文档。读取器控制文档的结构。尽管文档默认提供HTML支持,但没有任何阻止支持导致产生替代元素结构的非HTML标记。
- 模型的默认视图由一组View实现层次结构提供,因此可以轻松定制特定元素的显示方式,或通过提供新的View实现来为新类型的元素添加功能。默认的视图集由
HTMLFactory
类提供。可以通过对HTMLFactory进行子类化或替换并重新实现getViewFactory方法来轻松更改这一点,以返回替代工厂。 - View实现主要基于CSS属性,这些属性保存在视图中。这使得可以在同一模型上映射多个视图,这些视图看起来完全不同。这对打印特别有用。对于大多数HTML属性,HTML属性会转换为CSS属性以进行显示。这有助于使View实现更具通用性。
- 异步加载
-
较大的文档涉及大量解析并需要一些时间来加载。默认情况下,如果使用
JEditorPane.setPage
加载文档,则此工具包会生成将异步加载的文档。这由文档上的一个属性控制。可以重写方法createDefaultDocument
来更改这一点。工作的批处理由HTMLDocument.HTMLReader
类完成。实际工作由文本包中的DefaultStyledDocument
和AbstractDocument
类完成。 - 从当前LAF自定义
-
HTML提供了一组众所周知的功能,但并没有准确指定显示特性。Swing具有用于其外观和感觉实现的主题机制。希望外观和感觉将显示特性反馈到HTML视图中。例如,视力较差的用户可能希望高对比度和比典型字体大的字体。
这一支持由
StyleSheet
类提供。通过在EditorKit上设置StyleSheet属性,可以对HTML的呈现产生很大影响。 - 非丢失
- EditorKit具有读取和保存文档的能力。如果在这两个操作之间没有数据丢失,通常会让用户感到最满意。HTMLEditorKit的策略是存储未识别或不一定可见的内容,以便随后写出。因此,HTML文档的模型应包含在读取文档时发现的所有信息。这在某种程度上受到支持编辑的限制(即有时必须规范化不正确的文档)的约束。指导原则是信息不应丢失,但某些信息可能会被合成以生成更正确的模型,或者可能会被重新排列。
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
用于构建HTML视图的工厂。static class
提供一些方便方法的抽象操作,这些方法在将HTML插入现有文档时可能会有用。static class
InsertHTMLTextAction可用于将任意HTML字符串插入现有HTML文档。static class
在适当时监视关联组件并触发超链接事件的类。static class
解析器必须支持的接口。static class
解析的结果驱动这些回调方法。Nested classes/interfaces declared in class javax.swing.text.StyledEditorKit
StyledEditorKit.AlignmentAction, StyledEditorKit.BoldAction, StyledEditorKit.FontFamilyAction, StyledEditorKit.FontSizeAction, StyledEditorKit.ForegroundAction, StyledEditorKit.ItalicAction, StyledEditorKit.StyledTextAction, StyledEditorKit.UnderlineAction
Nested classes/interfaces declared in class javax.swing.text.DefaultEditorKit
DefaultEditorKit.BeepAction, DefaultEditorKit.CopyAction, DefaultEditorKit.CutAction, DefaultEditorKit.DefaultKeyTypedAction, DefaultEditorKit.InsertBreakAction, DefaultEditorKit.InsertContentAction, DefaultEditorKit.InsertTabAction, DefaultEditorKit.PasteAction
-
Field Summary
Modifier and TypeFieldDescriptionstatic 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 String
逻辑样式选择操作标识符,逻辑样式作为参数传递static final String
段落左缩进操作标识符static final String
段落右缩进操作标识符Fields declared in class 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
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionclone()
创建编辑器工具包的副本。创建适合此类型编辑器的未初始化文本存储模型。protected void
createInputAttributes
(Element element, MutableAttributeSet set) 将element
的键/值复制到set
的属性集中。void
当从JEditorPane中移除工具包时调用。返回与此编辑器工具包关联的AccessibleContextAction[]
获取编辑器的命令列表。获取此工具包表示支持的数据的MIME类型。返回默认光标。获取用于样式化编辑操作的输入属性。返回在超链接上使用的光标。protected HTMLEditorKit.Parser
获取用于读取HTML流的解析器。获取当前用于呈现HTML元素的样式集。获取适合生成由此工具包生成的任何模型的视图的工厂。void
insertHTML
(HTMLDocument doc, int offset, String html, int popDepth, int pushDepth, HTML.Tag insertTag) 将HTML插入现有文档。void
将工具包安装到JEditorPane中时调用。boolean
指示是否自动处理HTML表单提交,还是仅触发FormSubmitEvent
。void
从给定流中插入内容。void
setAutoFormSubmission
(boolean isAuto) 指定是否自动处理HTML表单提交,还是仅触发FormSubmitEvent
。void
setDefaultCursor
(Cursor cursor) 设置默认光标。void
setLinkCursor
(Cursor cursor) 设置在链接上使用的光标。void
设置用于呈现各种HTML元素的样式集。void
将文档中的内容以适合此类内容处理程序的格式写入给定流。Methods declared in class javax.swing.text.StyledEditorKit
getCharacterAttributeRun
Methods declared in class javax.swing.text.DefaultEditorKit
createCaret, read, write
-
Field Details
-
DEFAULT_CSS
设置标签视图的默认层叠样式表文件。- 参见:
-
BOLD_ACTION
粗体操作标识符- 参见:
-
ITALIC_ACTION
斜体操作标识符- 参见:
-
PARA_INDENT_LEFT
段落左缩进操作标识符- 参见:
-
PARA_INDENT_RIGHT
段落右缩进操作标识符- 参见:
-
FONT_CHANGE_BIGGER
字体大小增加到下一个值的操作标识符- 参见:
-
FONT_CHANGE_SMALLER
字体大小减小到下一个值的操作标识符- 参见:
-
COLOR_ACTION
颜色选择操作标识符,颜色作为参数传递- 参见:
-
LOGICAL_STYLE_ACTION
逻辑样式选择操作标识符,逻辑样式作为参数传递- 参见:
-
IMG_ALIGN_TOP
将图像对齐到顶部。- 参见:
-
IMG_ALIGN_MIDDLE
将图像对齐到中间。- 参见:
-
IMG_ALIGN_BOTTOM
将图像对齐到底部。- 参见:
-
IMG_BORDER
将图像对齐到边框。- 参见:
-
-
Constructor Details
-
HTMLEditorKit
public HTMLEditorKit()构造一个HTMLEditorKit,创建一个StyleContext,并加载样式表。
-
-
Method Details
-
getContentType
获取此工具包表示支持的数据的MIME类型。此工具包支持类型text/html
。- 覆盖:
-
getContentType
在类DefaultEditorKit
- 返回:
- 类型
-
getViewFactory
获取适用于生成由此工具包生成的任何模型的视图的工厂。- 覆盖:
-
getViewFactory
在类StyledEditorKit
- 返回:
- 工厂
-
createDefaultDocument
创建适合此类型编辑器的未初始化文本存储模型。- 覆盖:
-
createDefaultDocument
在类StyledEditorKit
- 返回:
- 模型
-
read
从给定流中插入内容。如果doc
是HTMLDocument的实例,则将读取HTML 3.2文本。将HTML插入非空文档必须在body Element内部,如果不在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.EndTagTypes数量 -
pushDepth
- 在生成结束标签后插入之前应生成的具有ElementSpec.JoinNextDirection方向的ElementSpec.StartTagTypes的数量,但在生成结束标签之后 -
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规范指定。由工具包生成的每个文档都将具有其自己的样式表副本,可以向其添加文档特定样式。默认情况下,指定的StyleSheet由所有HTMLEditorKit实例共享。如果需要,应重新实现此方法以提供更细粒度。- 参数:
-
s
- 样式表
-
getStyleSheet
获取当前用于呈现HTML元素的样式集。默认情况下,加载DEFAULT_CSS指定的资源,并由所有HTMLEditorKit实例共享。- 返回:
- 样式表
-
getActions
获取编辑器的命令列表。这是由超类支持的命令列表,加上本地定义的用于样式操作的命令集合。- 覆盖:
-
getActions
在类StyledEditorKit
- 返回:
- 命令列表
-
createInputAttributes
将element
的键/值复制到set
的AttributeSet中。这不会复制组件、图标或元素名称属性。子类可能希望在此处细化要复制的内容。但请确保首先删除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
-