Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java Swing中元素的用途及其与StyledDocument和段落的关系_Java_Swing_Coding Style_Element_Jeditorpane - Fatal编程技术网

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

java Swing中元素的用途及其与StyledDocument和段落的关系,java,swing,coding-style,element,jeditorpane,Java,Swing,Coding Style,Element,Jeditorpane,我试图理解元素的用途,以及它如何帮助操作要在JEditorPane或JTextPane中显示的样式文档。我还试图理解它与“段落”概念的关系 javax.swing.text.Element的javadoc几乎什么都不是: 公共接口元素 用于描述文档结构部分的接口。它旨在捕获SGML元素的精神。 我非常熟悉HTML和XML中元素的概念,显然这是类似的,但我看不出它的用途,因为它与StyledDocument有关。起初我认为这只是StyledDocument内部用来管理不同样式的停止点和开始点的东西

我试图理解元素的用途,以及它如何帮助操作要在JEditorPane或JTextPane中显示的样式文档。我还试图理解它与“段落”概念的关系

javax.swing.text.Element的javadoc几乎什么都不是:

公共接口元素

用于描述文档结构部分的接口。它旨在捕获SGML元素的精神。 我非常熟悉HTML和XML中元素的概念,显然这是类似的,但我看不出它的用途,因为它与StyledDocument有关。起初我认为这只是StyledDocument内部用来管理不同样式的停止点和开始点的东西,但后来我在web上看到了代码示例,其中他们使用了元素实例

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


但我得到的印象是,使用该元素将更有效或更清洁。请帮助我正确理解元素,以及它如何帮助StyledDocument和paragrah的概念,因此,即使我现在不使用任何元素,我至少会理解我缺少的内容,并知道是否以及如何在下一个类似情况下使用它。

事实上,DefaultStyledDocument是一个元素树。有分枝和叶状元素。叶表示一段文本,该文本具有诸如字体大小/样式、字体颜色属性(粗体、斜体、下划线等)等文本属性。元素包含叶或其他分支元素。在最简单的情况下,分支是段落。但根元素也是BranchElement的实例。所有元素都可能有自己的属性集。例如,要查找文本元素集合的颜色,请执行以下操作。如果未定义颜色,则会询问叶的父元素

您可以使用它来查看文档的表示方式(模型)以及模型在视图中的表示方式。


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

因此,如果我调用setParagraphAttributes,是否会在StyledDocument中创建一个元素来标记段落的开始和结束点?不,段落元素已经存在。它们是为插入的文本创建的。事实上,对于以“\n”结尾的每个文本片段,都会创建一个段落元素。调用setParagraphAttributes()时,所有受影响段落元素的属性都会根据方法的参数进行更改。如果最后一个参数为true,则所有旧属性都将替换为新属性。在相反的情况下,只替换指定的属性。谢谢。我将不得不花更多的时间来研究您链接中的示例,也许还有Sun文档相关类中的源代码。