模块 java.desktop

类 HTMLEditorKit

所有已实现的接口:
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 是如何建模的细节。编辑支持在很大程度上利用了文本包。

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

对此的支持由 StyleSheet 类提供。 HTML 的呈现在很大程度上受 EditorKit 上 StyleSheet 属性设置的影响。

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

    • 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
      The logical style choice action identifier逻辑风格作为参数传入
      参见:
    • 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
      返回:
      方式
    • 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 必须在 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

      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 规范指定的。该工具包生成的每个文档都将有一个工作表副本,它可以向其中添加文档特定样式。默认情况下,指定的样式表由所有 HTMLEditorKit 实例共享。如果需要,这应该重新实现以提供更精细的粒度。
      参数:
      s - 样式表
    • getStyleSheet

      public StyleSheet  getStyleSheet()
      获取当前用于呈现 HTML 元素的样式集。默认情况下,由 DEFAULT_CSS 指定的资源被加载,并被所有 HTMLEditorKit 实例共享。
      返回:
      样式表
    • getActions

      public Action [] getActions()
      获取编辑器的命令列表。这是由为样式操作在本地定义的命令集合扩充的超类支持的命令列表。
      重写:
      getActions 在类 StyledEditorKit
      返回:
      命令列表
    • createInputAttributes

      protected void createInputAttributes(Element  element, MutableAttributeSet  set)
      element s 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

      public void setAutoFormSubmission(boolean isAuto)
      指定是自动处理 html 表单提交还是仅触发 FormSubmitEvent。默认情况下,它设置为 true。
      参数:
      isAuto - 如果 true ,自动处理 html 表单提交。
      自从:
      1.5
      参见:
    • clone

      public Object  clone()
      创建编辑器工具包的副本。
      重写:
      clone 在类 StyledEditorKit
      返回:
      副本
      参见:
    • getParser

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

      public AccessibleContext  getAccessibleContext()
      返回与此编辑器工具包关联的 AccessibleContext
      指定者:
      getAccessibleContext 在接口 Accessible
      返回:
      与此编辑器工具包关联的 AccessibleContext
      自从:
      1.4