2013-07-08 27 views
-1

考慮代碼,StyleConstants文本背景,對齊不合羣

問題#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); 
+0

爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

+0

謝謝。更新。希望很明顯。 – user12458

+0

這顯然不是SSCCE。 –

回答

3

問題在於混合段落和文本屬性。有兩組屬性字符屬性 - 字體,字體大小,字體顏色等和段落屬性,如對齊,縮進,行間距,製表位等。

Bot將這些組應用於不同級別的層次結構(Document結構水平)。字符屬性應用於葉子(文本元素),但段落屬性應用於葉子的父代(段落元素)。

所以StyledDocument有2個方法setCharacterAttributessetParagrapphAttributes將屬性應用到適當的水平。

因此,當您插入字符串屬性應用於葉,所以只有字符屬性有意義。