- java.lang.Object
-
- javax.swing.text.EditorKit
-
- javax.swing.text.DefaultEditorKit
-
- javax.swing.text.StyledEditorKit
-
- javax.swing.text.html.HTMLEditorKit
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
,Accessible
public class HTMLEditorKit extends StyledEditorKit implements Accessible
Swing JEditorPane文本组件通过称为EditorKit的插件机制来支持不同类型的内容。 由于HTML是非常受欢迎的内容格式,默认情况下提供了一些支持。 该类提供了默认支持,该类支持HTML版本3.2(具有一些扩展),并且正在向版本4.0迁移。 <applet>标记不受支持,但对<object>标签提供了一些支持。HTML EditorKit提供了几个目标,对HTML进行建模的方式有影响。 这些都以实质的方式影响了其设计。
- 支持编辑
-
JEditorPane的插件似乎可以提供编辑支持,但这个事实有几个设计考虑。
有大量的HTML文档不符合HTML规范。
如果要编辑它们,则必须将其归一化为正确的形式。
此外,用户不希望被呈现过多的结构编辑,因此使用传统文本编辑手势优先于使用完全按照HTML文档中定义的HTML结构。
HTML的建模由类
HTMLDocument
。 其文档描述了HTML如何建模的细节。 编辑支持充分利用文本包。 - 可扩展的/可扩展
-
为了最大化这个套件的有用性,我们已经做了大量的工作来扩展它。
这些是一些功能。
- 解析器可更换。 默认解析器是基于DTD的热Java解析器。 可以使用不同的DTD,或者可以使用完全不同的解析器。 要更改解析器,请重新实现getParser方法。 默认的解析器在第一次被请求时被动态加载,所以如果使用另外一个解析器,类文件将永远不被加载。 默认解析器位于此包下面的一个名为parser的单独包中。
- 解析器驱动由HTMLDocument提供的ParserCallback。 要更改回调,子类HTMLDocument并重新实现createDefaultDocument方法以返回生成不同读取器的文档。 读者控制文档的结构。 虽然文档默认提供HTML支持,但是没有任何东西阻止支持导致替代元素结构的非HTML标签。
- 模型的默认视图作为View实现的层次结构提供,因此可以通过提供新的View实现来轻松地自定义特定元素的显示方式或添加新类型元素的功能。 默认视图由
HTMLFactory
类提供。 这可以通过子类化或替换HTMLFactory并重新实现getViewFactory方法来返回替代工厂来轻松更改。 - View实现主要从CSS属性中删除,这些属性保留在视图中。 这使得有可能在同一模型上映射出多个视图,这些视图显着不同。 这对打印尤其有用。 对于大多数HTML属性,HTML属性将转换为CSS属性进行显示。 这有助于使View实现更通用
- 异步加载
-
较大的文档涉及大量解析,需要一些时间才能加载。
默认情况下,此套件将生成将使用
JEditorPane.setPage
加载异步加载的JEditorPane.setPage
。 这由文档上的属性控制。 方法createDefaultDocument
可以被覆盖以改变这一点。 工作批量由HTMLDocument.HTMLReader
课程完成。 实际工作由文本包中的DefaultStyledDocument
和AbstractDocument
类完成。 - 从目前的LAF定制
-
HTML提供了一组众所周知的功能,而没有精确地指定显示特征。
Swing有一个主题机制,它的外观和感觉实现。
将显示特征提供给HTML视图是理想的外观和感觉。
例如,视力差的用户将需要高对比度并且比典型的字体更大。
对此的支持由
StyleSheet
类提供。 在EditorKit上设置StyleSheet属性会严重影响HTML的呈现。 - 没有损失
- EditorKit可以读取和保存文档。 如果两次操作之间没有数据丢失,通常情况下用户最乐意。 HTMLEditorKit的政策将是存储未被识别或不一定可见的东西,以便随后写出。 因此,HTML文档的模型应包含读取文档时发现的所有信息。 这在某些方面受到支持编辑的需要(即不正确的文档有时必须被归一化)。 指导原则是信息不应该丢失,但有些可能被合成以产生更正确的模型,或者可以重新排列。
- 另请参见:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
HTMLEditorKit.HTMLFactory
为HTML创建视图的工厂。static class
HTMLEditorKit.HTMLTextAction
一个抽象的Action提供了一些方便的方法,可能有助于将HTML插入到现有文档中。static class
HTMLEditorKit.InsertHTMLTextAction
InsertHTMLTextAction可用于将HTML的任意字符串插入到现有的HTML文档中。static class
HTMLEditorKit.LinkController
在适当的时候,类可以观看相关组件并在其上触发超链接事件。static class
HTMLEditorKit.Parser
接口由解析器支持。static class
HTMLEditorKit.ParserCallback
解析的结果驱动这些回调方法。-
Nested classes/interfaces inherited from class javax.swing.text.DefaultEditorKit
DefaultEditorKit.BeepAction, DefaultEditorKit.CopyAction, DefaultEditorKit.CutAction, DefaultEditorKit.DefaultKeyTypedAction, DefaultEditorKit.InsertBreakAction, DefaultEditorKit.InsertContentAction, DefaultEditorKit.InsertTabAction, DefaultEditorKit.PasteAction
-
Nested classes/interfaces inherited from class javax.swing.text.StyledEditorKit
StyledEditorKit.AlignmentAction, StyledEditorKit.BoldAction, StyledEditorKit.FontFamilyAction, StyledEditorKit.FontSizeAction, StyledEditorKit.ForegroundAction, StyledEditorKit.ItalicAction, StyledEditorKit.StyledTextAction, StyledEditorKit.UnderlineAction
-
-
Field Summary
Fields Modifier and Type Field 描述 static String
BOLD_ACTION
粗体动作标识符static String
COLOR_ACTION
颜色选择动作标识符颜色作为参数传递static String
DEFAULT_CSS
默认级联样式表文件,用于设置标签视图。static String
FONT_CHANGE_BIGGER
字体大小增加到下一个值动作标识符static String
FONT_CHANGE_SMALLER
字体大小减小到下一个值动作标识符static String
IMG_ALIGN_BOTTOM
将图像对齐在底部。static String
IMG_ALIGN_MIDDLE
在中间对齐图像。static String
IMG_ALIGN_TOP
将图像对齐在顶部。static String
IMG_BORDER
在边框对齐图像。static String
ITALIC_ACTION
斜体动作标识符static String
LOGICAL_STYLE_ACTION
逻辑样式选择动作标识符逻辑样式作为参数传入static String
PARA_INDENT_LEFT
段落为缩进动作标识符static String
PARA_INDENT_RIGHT
段落正确的缩进动作标识符-
Fields inherited from class javax.swing.text.DefaultEditorKit
backwardAction, beepAction, beginAction, beginLineAction, beginParagraphAction, beginWordAction, copyAction, cutAction, defaultKeyTypedAction, deleteNextCharAction, deleteNextWordAction, deletePrevCharAction, deletePrevWordAction, downAction, endAction, endLineAction, 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 描述 HTMLEditorKit()
构造一个HTMLEditorKit,创建一个StyleContext,并加载样式表。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 Object
clone()
创建一个编辑工具包的副本。Document
createDefaultDocument()
创建适用于此类型编辑器的未初始化文本存储模型。protected void
createInputAttributes(Element element, MutableAttributeSet set)
将element
的AttributeSet中的键/值复制到set
。void
deinstall(JEditorPane c)
当该套件从JEditorPane中删除时调用。AccessibleContext
getAccessibleContext()
返回与此编辑器工具包关联的AccessibleContextAction[]
getActions()
获取编辑器的命令列表。String
getContentType()
获取此套件代表支持的数据的MIME类型。Cursor
getDefaultCursor()
返回默认游标。MutableAttributeSet
getInputAttributes()
获取用于样式编辑操作的输入属性。Cursor
getLinkCursor()
返回光标以超链接使用。protected HTMLEditorKit.Parser
getParser()
获取解析器以用于读取HTML流。StyleSheet
getStyleSheet()
获取当前用于呈现HTML元素的一组样式。ViewFactory
getViewFactory()
获取适合产生由该套件生产的任何型号的视图的工厂。void
insertHTML(HTMLDocument doc, int offset, String html, int popDepth, int pushDepth, HTML.Tag insertTag)
将HTML插入到现有文档中。void
install(JEditorPane c)
当该套件安装到JEditorPane中时调用。boolean
isAutoFormSubmission()
指示是自动处理html表单提交还是仅FormSubmitEvent
。void
read(Reader in, Document doc, int pos)
从给定的流插入内容。void
setAutoFormSubmission(boolean isAuto)
指定是否自动处理html表单提交或仅FormSubmitEvent
。void
setDefaultCursor(Cursor cursor)
设置默认光标。void
setLinkCursor(Cursor cursor)
将光标设置为使用链接。void
setStyleSheet(StyleSheet s)
设置用于渲染各种HTML元素的样式集。void
write(Writer out, Document doc, int pos, int len)
将内容从文档以适合此类内容处理程序的格式写入给定流。-
Methods inherited from class javax.swing.text.DefaultEditorKit
createCaret, read, write
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from class javax.swing.text.StyledEditorKit
getCharacterAttributeRun
-
-
-
-
字段详细信息
-
DEFAULT_CSS
public static final String DEFAULT_CSS
默认级联样式表文件,用于设置标签视图。- 另请参见:
- Constant Field Values
-
BOLD_ACTION
public static final String BOLD_ACTION
粗体动作标识符- 另请参见:
- Constant Field Values
-
ITALIC_ACTION
public static final String ITALIC_ACTION
斜体动作标识符- 另请参见:
- Constant Field Values
-
PARA_INDENT_LEFT
public static final String PARA_INDENT_LEFT
段落为缩进动作标识符- 另请参见:
- Constant Field Values
-
PARA_INDENT_RIGHT
public static final String PARA_INDENT_RIGHT
段落正确的缩进动作标识符- 另请参见:
- Constant Field Values
-
FONT_CHANGE_BIGGER
public static final String FONT_CHANGE_BIGGER
字体大小增加到下一个值动作标识符- 另请参见:
- Constant Field Values
-
FONT_CHANGE_SMALLER
public static final String FONT_CHANGE_SMALLER
字体大小减小到下一个值动作标识符- 另请参见:
- Constant Field Values
-
COLOR_ACTION
public static final String COLOR_ACTION
颜色选择动作标识符颜色作为参数传递- 另请参见:
- Constant Field Values
-
LOGICAL_STYLE_ACTION
public static final String LOGICAL_STYLE_ACTION
逻辑样式选择动作标识符逻辑样式作为参数传入- 另请参见:
- Constant Field Values
-
IMG_ALIGN_TOP
public static final String IMG_ALIGN_TOP
将图像对齐在顶部。- 另请参见:
- Constant Field Values
-
IMG_ALIGN_MIDDLE
public static final String IMG_ALIGN_MIDDLE
在中间对齐图像。- 另请参见:
- Constant Field Values
-
IMG_ALIGN_BOTTOM
public static final String IMG_ALIGN_BOTTOM
将图像对齐在底部。- 另请参见:
- Constant Field Values
-
IMG_BORDER
public static final String IMG_BORDER
在边框对齐图像。- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
getContentType
public String getContentType()
获取此套件代表支持的数据的MIME类型。 该套件支持类型text/html
。- 重写:
-
getContentType
在DefaultEditorKit
- 结果
- 方式
-
getViewFactory
public ViewFactory getViewFactory()
获取适合产生由该套件生产的任何型号的视图的工厂。- 重写:
-
getViewFactory
在StyledEditorKit
- 结果
- 工厂
-
createDefaultDocument
public Document createDefaultDocument()
创建适用于此类型编辑器的未初始化文本存储模型。- 重写:
-
createDefaultDocument
在StyledEditorKit
- 结果
- 该模型
-
read
public void read(Reader in, Document doc, int pos) throws IOException, BadLocationException
从给定的流插入内容。 如果doc
是HTMLDocument的一个实例,这将读取HTML 3.2文本。 将HTML插入非空文档必须位于主体元素内,如果不插入到正文中,将抛出异常。 当插入非空文档时,身体之外的所有标签(头,标题)将被删除。- 重写:
-
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的偏移量 -
popDepth
- 插入之前要生成的ElementSpec.EndTagTypes的数量 -
html
- HTML字符串 -
pushDepth
- ElementSpec.StartTagTypes的数量,其方向为ElementSpec.JoinNextDirection,应该在插入之前生成,但在生成结束标签之后 -
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
public void install(JEditorPane c)
当该套件安装到JEditorPane中时调用。- 重写:
-
install
在StyledEditorKit
- 参数
-
c
- JEditorPane
-
deinstall
public void deinstall(JEditorPane c)
当该套件从JEditorPane中删除时调用。 这用于取消注册附加的任何监听器。- 重写:
-
deinstall
在StyledEditorKit
- 参数
-
c
- JEditorPane
-
setStyleSheet
public void setStyleSheet(StyleSheet s)
设置用于渲染各种HTML元素的样式集。 这些样式是根据CSS规范指定的。 套件生成的每个文件都将具有可以将文档特定样式添加到的工作表的副本。 默认情况下,指定的StyleSheet由所有HTMLEditorKit实例共享。 如果需要,应该重新实现这一点,以提供更精细的粒度。- 参数
-
s
- 样式表
-
getStyleSheet
public StyleSheet getStyleSheet()
获取当前用于呈现HTML元素的一组样式。 默认情况下,DEFAULT_CSS指定的资源将被加载,并由所有HTMLEditorKit实例共享。- 结果
- StyleSheet
-
getActions
public Action[] getActions()
获取编辑器的命令列表。 这是超级类支持的命令的列表,这些命令由对本地定义的样式操作定义的命令集合进行了扩充。- 重写:
-
getActions
在StyledEditorKit
- 结果
- 命令列表
-
createInputAttributes
protected void createInputAttributes(Element element, MutableAttributeSet set)
将element
的AttributeSet中的键/值复制到set
。 这不会复制组件,图标或元素名称属性。 子类可能希望改进什么是什么和什么不复制在这里。 但请务必先删除set
中的所有属性。随时插入符号在不同位置移动即可。
- 重写:
-
createInputAttributes
在StyledEditorKit
- 参数
-
element
- 元素 -
set
- 属性
-
getInputAttributes
public MutableAttributeSet getInputAttributes()
获取用于样式编辑操作的输入属性。- 重写:
-
getInputAttributes
在StyledEditorKit
- 结果
- 属性集
-
setDefaultCursor
public void setDefaultCursor(Cursor cursor)
设置默认光标。- 参数
-
cursor
- 一个游标 - 从以下版本开始:
- 1.3
-
getDefaultCursor
public Cursor getDefaultCursor()
返回默认游标。- 结果
- 光标
- 从以下版本开始:
- 1.3
-
setLinkCursor
public void setLinkCursor(Cursor cursor)
将光标设置为使用链接。- 参数
-
cursor
- 一个游标 - 从以下版本开始:
- 1.3
-
getLinkCursor
public Cursor getLinkCursor()
返回光标以超链接使用。- 结果
- 光标
- 从以下版本开始:
- 1.3
-
isAutoFormSubmission
public boolean isAutoFormSubmission()
指示是自动处理html表单提交还是仅FormSubmitEvent
。- 结果
- 如果html表单提交被自动处理,则为true,否则为false。
- 从以下版本开始:
- 1.5
- 另请参见:
-
setAutoFormSubmission(boolean)
-
setAutoFormSubmission
public void setAutoFormSubmission(boolean isAuto)
指定是否自动处理html表单提交或仅FormSubmitEvent
。 默认设置为true。- 参数
-
isAuto
- 如果是true
,html表单提交被自动处理。 - 从以下版本开始:
- 1.5
- 另请参见:
-
isAutoFormSubmission()
,FormSubmitEvent
-
clone
public Object clone()
创建一个编辑工具包的副本。- 重写:
-
clone
在StyledEditorKit
- 结果
- 副本
- 另请参见:
-
Cloneable
-
getParser
protected HTMLEditorKit.Parser getParser()
获取解析器以用于读取HTML流。 这可以被重新实现以提供不同的解析器。 默认实现是动态加载的,以避免在不使用默认解析器时加载默认解析器的开销。 默认解析器是使用HTML 3.2 DTD的HotJava解析器。- 结果
- 解析器
-
getAccessibleContext
public AccessibleContext getAccessibleContext()
返回与此编辑器工具包关联的AccessibleContext- Specified by:
-
getAccessibleContext
在接口Accessible
- 结果
- 与此编辑器工具包相关联的AccessibleContext
- 从以下版本开始:
- 1.4
-
-