-1

考虑代码,

问题 #1

StyledDocument doc=textPane.getStyledDocument();
SimpleAttributeSet attrib=new SimpleAttributeSet();
attrib.addAttribute(StyleConstants.CharacterConstants.Alignment,StyleConstants.ALIGN_RIGHT);
doc.insertString(0,"This is sample text",attrib);

为什么我无法对齐?以及为什么我能够通过这样做得到它

doc.setParagraphAttributes(0,doc.getLength(),attrib,false);

问题2

attrib.addAttribute(StyleConstants.ColorConstants.Background,Color.LIGHT_GRAY);
doc.setParagraphAttributes(0,doc.getLength(),attrib,false);

为什么我无法获得背景颜色?以及为什么我能够通过这样做得到它

doc.insertString(0,"This is sample text",attrib);

问题 #3

我什么时候可以一起工作,即带有背景和右对齐的文本,除非使用这种方式,

doc.insertString(0,"This is sample text",attrib);
doc.setParagraphAttributes(0,doc.getLength(),attrib,false);
4

1 回答 1

3

问题是混合段落和文本属性。有两组属性字符属性 - 字体、字体大小、字体颜色等和段落属性,如对齐、缩进、行间距、制表位等。

Bot 组应用于不同的层次结构级别(Document结构级别)。字符属性应用于叶子(文本元素),但段落属性应用于叶子的父级(段落元素)。

所以StyledDocument有两种方法setCharacterAttributes并将setParagrapphAttributes属性应用到适当的级别。

因此,当您插入字符串时,属性将应用于叶子,因此只有字符属性才有意义。

于 2013-07-09T05:34:50.323 回答