模块  java.desktop
软件包  javax.swing.text.html

Class HTMLEditorKit

  • 实现的所有接口
    SerializableCloneableAccessible

    public class HTMLEditorKitextends StyledEditorKitimplements Accessible
    Swing JEditorPane文本组件通过名为EditorKit的插件机制支持不同类型的内容。 由于HTML是一种非常流行的内容格式,因此默认情况下会提供一些支持。 默认支持由此类提供,该类支持HTML 3.2版(带有一些扩展),并且正在向4.0版迁移。 不支持<applet>标记,但为<object>标记提供了一些支持。

    提供的HTML EditorKit有几个目标,它们对HTML的建模方式有影响。 这些都以实质性的方式影响了它的设计。

    支持编辑
    看起来很明显,JEditorPane的插件应该提供编辑支持,但这个事实有几个设计考虑因素。 有大量HTML文档不能正确地符合HTML规范。 如果要编辑它们,必须将它们标准化为正确的形式。 此外,用户不希望被呈现过多的结构编辑,因此使用传统的文本编辑手势比使用完全如HTML文档中定义的HTML结构更受欢迎。

    HTML的建模由类HTMLDocument 其文档描述了HTML建模的详细信息。 编辑支持大量使用文本包。

    可扩展的/可扩展
    为了最大限度地发挥该套件的实用性,已经付出了大量努力使其可扩展。 这些是一些功能。
    1. 解析器是可替换的。 默认解析器是基于DTD的Hot Java解析器。 可以使用不同的DTD,或者可以使用完全不同的解析器。 要更改解析器,请重新实现getParser方法。 首次请求时会动态加载默认解析器,因此如果使用备用解析器,则永远不会加载类文件。 默认解析器位于此包下面的一个名为parser的独立包中。
    2. 解析器驱动ParserCallback,它由HTMLDocument提供。 要更改回调,请继承HTMLDocument并重新实现createDefaultDocument方法以返回生成不同读者的文档。 阅读器控制文档的结构。 虽然默认情况下Document提供HTML支持,但是没有任何东西可以阻止非HTML标记的支持,从而导致替代元素结构。
    3. 模型的默认视图作为View实现的层次结构提供,因此可以通过提供新的View实现轻松自定义特定元素的显示方式或添加新类型元素的功能。 默认的视图集由HTMLFactory类提供。 通过继承或替换HTMLFactory并重新实现getViewFactory方法以返回替代工厂,可以轻松更改此设置。
    4. View实现主要使用CSS属性,这些属性保存在视图中。 这使得可以在同一模型上映射多个视图,这些视图看起来大不相同。 这对于打印尤其有用。 对于大多数HTML属性,HTML属性将转换为CSS属性以供显示。 这有助于使View实现更具通用性
    异步加载
    较大的文档涉及大量解析并需要一些时间来加载。 默认情况下,如果使用JEditorPane.setPage加载,此工具包将生成将异步加载的JEditorPane.setPage 这由文档上的属性控制。 可以覆盖方法createDefaultDocument以更改此方法。 批量工作由HTMLDocument.HTMLReader课程完成。 实际工作由文本包中的DefaultStyledDocumentAbstractDocument类完成。
    来自当前LAF的定制
    HTML提供了一组众所周知的功能,但没有明确指定显示特性。 Swing有一个主题机制,用于其外观实现。 希望外观将显示特性馈送到HTML视图中。 例如,视力不佳的用户需要高对比度并且比典型字体更大。

    对此的支持由StyleSheet类提供。 在EditorKit上设置StyleSheet属性会严重影响HTML的显示。

    没有损失
    EditorKit具有读取和保存文档的功能。 如果两个操作之间没有数据丢失,通常是用户最满意的。 HTMLEditorKit的策略是存储未识别或不一定可见的内容,以便随后可以将其写出。 因此,HTML文档的模型应包含在阅读文档时发现的所有信息。 这在某些方面受到支持编辑的需要的约束(即,有时必须对不正确的文档进行标准化)。 指导原则是不应丢失信息,但可以合成一些信息以产生更正确的模型,或者可以重新排列信息。
    另请参见:
    Serialized Form
    • 字段详细信息

      • DEFAULT_CSS

        public static final String DEFAULT_CSS
        用于设置标记视图的默认级联样式表文件。
        另请参见:
        常数字段值
      • BOLD_ACTION

        public static final String BOLD_ACTION
        粗体动作标识符
        另请参见:
        常数字段值
      • ITALIC_ACTION

        public static final String ITALIC_ACTION
        斜体动作标识符
        另请参见:
        常数字段值
      • PARA_INDENT_LEFT

        public static final String PARA_INDENT_LEFT
        该段落留下缩进动作标识符
        另请参见:
        常数字段值
      • PARA_INDENT_RIGHT

        public static final String PARA_INDENT_RIGHT
        段落右缩进动作标识符
        另请参见:
        常数字段值
      • FONT_CHANGE_BIGGER

        public static final String FONT_CHANGE_BIGGER
        字体大小增加到下一个值操作标识符
        另请参见:
        常数字段值
      • FONT_CHANGE_SMALLER

        public static final String FONT_CHANGE_SMALLER
        字体大小减小到下一个值操作标识符
        另请参见:
        常数字段值
      • COLOR_ACTION

        public static final String COLOR_ACTION
        颜色选择操作标识符颜色作为参数传递
        另请参见:
        常数字段值
      • LOGICAL_STYLE_ACTION

        public static final String LOGICAL_STYLE_ACTION
        逻辑样式选择操作标识符逻辑样式作为参数传递
        另请参见:
        常数字段值
      • IMG_ALIGN_TOP

        public static final String IMG_ALIGN_TOP
        将图像对齐在顶部。
        另请参见:
        常数字段值
      • IMG_ALIGN_MIDDLE

        public static final String IMG_ALIGN_MIDDLE
        对齐中间的图像。
        另请参见:
        常数字段值
      • IMG_ALIGN_BOTTOM

        public static final String IMG_ALIGN_BOTTOM
        对齐底部的图像。
        另请参见:
        常数字段值
      • IMG_BORDER

        public static final String IMG_BORDER
        对齐边框处的图像。
        另请参见:
        常数字段值
    • 构造方法详细信息

      • HTMLEditorKit

        public HTMLEditorKit()
        构造一个HTMLEditorKit,创建一个StyleContext,并加载样式表。
    • 方法详细信息

      • getContentType

        public String getContentType()
        获取此工具包代表支持的数据的MIME类型。 该套件支持text/html型。
        重写:
        getContentType在类 DefaultEditorKit
        结果
        类型
      • read

        public void read​(Reader in,                 Document doc,                 int pos)          throws IOException,                 BadLocationException
        插入来自给定流的内容。 如果doc是HTMLDocument的实例,则会读取HTML 3.2文本。 将HTML插入到非空文档中必须位于body元素内部,如果未插入到正文中,则会抛出异常。 当插入非空文档时,身体外部的所有标签(头部,标题)将被丢弃。
        重写:
        read在类 DefaultEditorKit
        参数
        in - 要读取的流
        doc - 插入的目的地
        pos - 放置内容的文档中的位置
        异常
        IOException - 关于任何I / O错误
        BadLocationException - 如果pos表示文档中的无效位置
        RuntimeException - 如果pos无效,(最终将是BadLocationException)
      • 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 - 如果pos无效,(最终将是BadLocationException)
      • 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 - 属性
      • 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
      • getParser

        protected HTMLEditorKit.Parser getParser()
        获取解析器以用于读取HTML流。 这可以重新实现以提供不同的解析器。 默认实现是动态加载的,以避免在未使用时加载默认解析器的开销。 默认解析器是使用HTML 3.2 DTD的HotJava解析器。
        结果
        解析器
      • getAccessibleContext

        public AccessibleContext getAccessibleContext()
        返回与此编辑器工具包关联的AccessibleContext
        Specified by:
        getAccessibleContext在界面 Accessible
        结果
        与此编辑器工具包关联的AccessibleContext
        从以下版本开始:
        1.4