Java Swing中元素的用途及其与StyledDocument和段落的关系

Gig*_*ron 3 java swing coding-style element jeditorpane

我试图了解Element的用途以及它如何帮助操作将在JEditorPane或JTextPane中显示的StyledDocument.我也试图理解它与"段落"概念的关系.

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

public interface Element

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

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

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

但我得到的印象是使用Element会更高效或更清洁.请帮助我正确理解Element以及它如何帮助StyledDocument和paragrah的概念,所以即使我现在不使用任何元素我至少会欣赏我所缺少的东西,并且知道是否和如何将它用于下一个类似的情况.

Sta*_*avL 6

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

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

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