Swing组件支持哪些HTML标签?

17
许多Swing组件支持嵌入HTML,但我找不到任何官方的相关文档。(Sun网站上有关HTML的所有内容似乎都是针对JEditorPane)。
所以:Swing组件支持哪些HTML标签?
编辑:虽然我说过我缺少“官方文档”,但我也想要任何“非官方”的文档。

与Swing的大多数事物一样,最好的做法是查看源代码。 - Tom Hawtin - tackline
5个回答

7

2

我认为它是HTML 3.x的一个狭窄子集,虽然我不记得在哪里读到过。


Swing文本组件支持HTML 3.2(Wilbur)和CSS 1.0的合理子集。 - Lawrence Dol

1
事实上,Javax Swing HTML解析器是一个DTD驱动的解析器。默认的DTD称为html32.dtd,这意味着它支持大多数HTML 32建议。
如果您想支持更多标签,您必须扩展或重写此DTD。例如,在下面的示例中,MathML支持被添加到Swing HTML中:

enter image description here

一份错误报告被提交以使这更容易: 在文档中添加关于DTDBuilder的参考或信息 请注意:
  • 这是支持您的标记的第一步。接下来,您需要设计其呈现方式并在视图工厂中注册它。
  • Swing Text HTML 不适用于从万维网读取 HTML 文档。
  • Web 浏览器不使用 DTD 方法。
  • 如果您想在具有导出到 World Wide Web 的能力的项目中严格控制文档结构但无需阅读真实的 World HTML 文档,则 DTD 方法很有意义。DTD 可能会卡在格式不正确的文档上。
  • 将 Swing HTML 视为底层文档结构为 HTML 的 Wordpad。

1

我不确定支持哪些标签,但我建议您仅限于使用粗体/斜体(或者更好的是强调/加粗,如果它支持的话)和图像标签。其他任何标签都可能会引起麻烦,并且很可能意味着您正在将太多内容塞入该组件中。


我并不这么认为 - 我是在说虽然它可能“支持”更多,但不太可能支持得好,而我已经提出了真正问题的建议。 - Draemon
1
我认为这是一个有效的答案,我通过搜索找到了这个问题,因为我有同样的问题,我认为Draemon提出了一个很好的观点——“其他任何东西...可能意味着你把太多东西塞进了那个组件中。” - Tom Neyland
你可以做比粗体/斜体更花哨的东西。我曾经创建了一个带有HTML表格的JLabel,并将其放入JScrollPane中,为了使其工作得很好,我所需要的唯一技巧是自定义滚动增量。 - Mark VY

1
正如@Mr.Napik在他的回答中指出的那样,Swing HTML支持基于HTML 3.2,但它确实支持一些额外的标签(特别是<span>)。具体支持的标签在HTML.Tag documentation中有记录。
CSS支持也在CSS documentation中详细说明。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接