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

标签 java swing coding-style element jeditorpane

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

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

public interface Element

Interface to describe a structural piece of a document. It is intended to capture the spirit of an SGML element.

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

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

但我的印象是使用 Element 会更高效或更清洁。请帮助我正确理解 Element 以及它对 StyledDocument 和段落概念的帮助如何在下一个类似情况下使用它。

最佳答案

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

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

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

关于java - Java Swing 中元素的用途及其与 StyledDocument 和段落的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4781792/

相关文章:

java - Swing - setResizable(true) 使 JFrame 标题栏更高,窗口尺寸更小

coding-style - Lazarus 编码风格指南

java - 使用 try catch finally block 时组织 java 代码

java - 使用 DAO 模式时,您是否曾将 EntityManager 或 Session 公开为参数?

java - [Microsoft][ODBC Microsoft Access Driver] '(unknown)' 不是有效路径

java - 用什么替换路径中的空格字符?

java - 使用 (.matches) boolean 语句可以防止 XSS 攻击吗?

java - 用于选择并显示数组项的 J 按钮

java - 调用 SwingWorker 方法 get() 时 gui 卡住

coding-style - wx.Frame样式位掩码中使用的所有样式参数的列表