Java JTextPane StyleConstants Allignment无法正常工作

Java JTextPane StyleConstants Allignment无法正常工作,java,swing,jtextpane,Java,Swing,Jtextpane,使用下面的代码,我试图根据发件人对邮件进行对齐和着色。但它会立即应用颜色,但不会像图片那样立即应用对齐 蓝色的来自发件人,必须在左侧,红色的来自其他发件人,必须在右侧,橙色来自服务器,必须居中 您只能为最后一段调用setParagraphAttributes()(doc.getLength()和size=1)。而是存储消息开始偏移量,并将段落属性应用于插入的文本 int offset = doc.getLength(); String message = new SimpleDateForma

使用下面的代码,我试图根据发件人对邮件进行对齐和着色。但它会立即应用颜色,但不会像图片那样立即应用对齐

蓝色的来自发件人,必须在左侧,红色的来自其他发件人,必须在右侧,橙色来自服务器,必须居中


您只能为最后一段调用setParagraphAttributes()(doc.getLength()和size=1)。而是存储消息开始偏移量,并将段落属性应用于插入的文本

int offset = doc.getLength();
String message = new SimpleDateFormat("HH:mm").format(new Date()) + " " + name + ": " + message + "\n"

doc.insertString(doc.getLength(), message, center);
doc.setParagraphAttributes(offset, message.length() , center, false);

您只能为最后一段调用setParagraphAttributes()(doc.getLength()和size=1)。而是存储消息开始偏移量,并将段落属性应用于插入的文本

int offset = doc.getLength();
String message = new SimpleDateFormat("HH:mm").format(new Date()) + " " + name + ": " + message + "\n"

doc.insertString(doc.getLength(), message, center);
doc.setParagraphAttributes(offset, message.length() , center, false);

在最后一个字符+1上调用setParagraphAttributes:
doc.setParagraphAttributes(doc.getLength(),1…
将在下一个输入上应用该样式,这意味着您不是在告诉文档“请,将最后一段放在右边”,而是在问“请,将下一个传入的段落放在右边”。这就是为什么您觉得在应用请求之前有一个“延迟”。

在最后一个字符+1上调用setParagraphAttributes:
doc.setParagraphAttributes(doc.getLength(),1…
将在下一次输入中应用样式,这意味着不告诉您的文档“请将最后一段放到右边”,你会问“请,把下一个输入的段落放到右边”。这就是为什么你觉得在你的请求被应用之前有一个“延迟”的原因。

你能试试:`doc.setParagraphAttributes(Math.max(0,doc.getLength()-1),1,XXX,false);反之?如果行得通,我会解释为什么。你能试试:`doc.setParagraphAttributes吗(Math.max(0,doc.getLength()-1),1,XXX,false);如果它起作用,我会解释原因。