我想在JTextPane中追加文字,我让每一行都有不同的颜色,但当我试图从左到右,从右到左制作线条时,它不起作用
这是我的方法代码
private void appendToPane(JTextPane tp, String msg, Color c , String rientation)
{
ComponentOrientation ornt = ComponentOrientation.LEFT_TO_RIGHT;
if(orientation.equals("left"))
ornt = ComponentOrientation.LEFT_TO_RIGHT;
StyleContext sc = StyleContext.getDefaultStyleContext();
AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c);
AttributeSet or = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Orientation , StyleConstants.ALIGN_RIGHT );
AttributeSet fnt = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Background , Color.YELLOW);
AttributeSet fontSize = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.FontSize, 25);
// aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console");
// aset = sc.addAttribute(aset, StyleConstants.Alignment, StyleConstants.ALIGN_JUSTIFIED);
int len = tp.getDocument().getLength();
tp.setCaretPosition(len);
tp.setCharacterAttributes(aset, false);
tp.setCharacterAttributes(or , false);
tp.setCharacterAttributes(fnt, false);
tp.setCharacterAttributes(fontSize, false);
// if(orientation.equals("left"))
// tp.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
// else
// tp.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
// if(orientation != null)
// tp.setAlignmentX(Component.RIGHT_ALIGNMENT);
// else
// tp.setAlignmentX(orientation);
// tp.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
tp.replaceSelection(msg);
}
答案 0 :(得分:0)
因此,如果您的目标是更改对齐方式,则以下是您的代码示例:
如果您的目标是更改文字的方向,请查看关于this的Bidirectional text。
如果您的目标是从右到左书写文字,您只需在文档中添加DocumentFilter并从那里反转文档的逻辑(向后将变为向前,插入符将在之前移动插入而不是之后,插入的文本将被镜像,等等)
如果你能更清楚地表明你的预期结果是什么,我们可能会对你有所帮助。