3

我试图了解Element的用途以及它如何帮助操作要在 JEditorPane 或 JTextPane 中显示的StyledDocument 。我也试图掌握它与“段落”概念的关系。

javax.swing.text.Element 的 javadoc 几乎没有:

public interface Element

描述文档结构部分的接口。它旨在捕捉 SGML 元素的精神。

我非常熟悉 HTML 和 XML 中元素的概念,显然这是类似的东西,但我只是看不出它与 StyledDocument 相关的目的。起初我认为这只是 StyledDocument 在内部用来管理不同样式的停止点和起点的东西,但后来我在网上看到了使用 Element 实例的代码示例。

我已经有了自己的数据树结构,需要以不同的字体和颜色显示,遍历它会告诉我在哪里根据需要更改字体或颜色。看起来我将能够通过对StyledDocument.setCharacterAttributessetParagraphAttributes的一系列调用来满足即时需求,而无需亲自接触 Element。

但我的印象是使用 Element 会更有效或更清洁。请帮助我正确理解 Element 以及它如何帮助 StyledDocument 和 paragrah 的概念,所以即使我现在不使用任何 Elements 我至少会欣赏我所缺少的并知道是否和如何在下一个类似的情况下使用它。

4

1 回答 1

6

事实上 DefaultStyledDocument 是一个元素树。有 BranchElements 和 LeafElements。Leaf 表示一段带有文本属性的文本,如字体大小/样式、字体颜色属性 - 粗体、斜体、下划线等。 BrachElement 包含叶子或其他分支元素。在最简单的情况下,分支是段落。但根元素也是 BranchElement 的实例。所有元素都可能有自己的 AttributeSet。例如,要查找文本 LeafElement 集合的颜色。如果未定义颜色,则询问叶子的父元素。

您可以使用它来查看文档的表示方式(模型)以及模型在视图中的表示方式。 http://java-sl.com/JEditorPaneStructureTool.html

该示例显示了 HTMLDocument 的结构,但您也可以使用相同的代码查看 StyledEditorKit 的结构

于 2011-01-24T13:42:03.237 回答