考虑代码,
问题#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 :(得分:3)
问题在于混合段落和文本属性。有两组属性字符属性 - 字体,字体大小,字体颜色等,以及段落属性,如对齐,缩进,行间距,制表位等。
将组应用于不同级别的层次结构(Document
结构级别)。字符属性应用于叶子(文本元素),但段落属性应用于叶子的父项(段落元素)。
所以StyledDocument
有2个方法setCharacterAttributes
和setParagrapphAttributes
将属性应用到适当的级别。
因此,当您插入字符串属性应用于叶子时,只有字符属性才有意义。