gpt4 book ai didi

java - jTextPane 颜色在聊天中有一些异常

转载 作者:行者123 更新时间:2023-11-30 03:26:01 26 4
gpt4 key购买 nike

我正在使用 jTextPane 来使用发送者和接收者聊天颜色。一切正常,但 javax.swing.text.DefaultStyledDocument@123456 对于每条聊天消息。

<小时/>

这里 Jhon 是接收者,peter 是发送者

enter image description here

<小时/>

这里 Peter 是接收者,Jhon 是发送者

enter image description here

可能是我在代码中犯了一些错误。

这是发送者的代码

DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss\n\t   dd/MM/yyyy ");
Date date = new Date();

StyledDocument doc = GUI.jTextPane1.getStyledDocument();
Style style = GUI.jTextPane1.addStyle("a style", null);
StyleConstants.setForeground(style, Color.red);

try {

doc.insertString(doc.getLength(), "\t " + "You" + " : " + GUI.getSendMessage() +("\n \t "+dateFormat.format(date)) ,style);
GUI.appendReceivedMessages(""+doc);
}
catch (BadLocationException e){}

这是接收器的代码

DateFormat dateFormate = new SimpleDateFormat("HH:mm:ss\ndd/MM/yyyy ");
Date datee = new Date();
StyledDocument doc1 = GUI.jTextPane1.getStyledDocument();
Style styler = GUI.jTextPane1.addStyle("a style", null);

StyleConstants.setForeground(styler, Color.blue);

try { doc1.insertString(doc1.getLength(),"recevier" ,styler);
GUI.appendReceivedMessages(fromHeader.getAddress().getDisplayName() + " : "
+ new String(request.getRawContent()) +("\n"+dateFormate.format(datee)));
}
catch (BadLocationException e){}

这是我得到这些的主 GUI

public void appendReceivedMessages(String s) {
try {
Document doce = jTextPane1.getDocument();
doce.insertString(doce.getLength(), s+"\n", null);
} catch(BadLocationException exc) {

}


}

最佳答案

这太明显了 - 不确定是否有资格得到答案。无论如何

你为什么要做GUI.appendReceivedMessages(""+doc);?这导致 doc 对象的默认 toString 出现。希望有帮助

编辑:

so what can I do here

我想你可以这样做:请注意,StyledDocumentinsertString API 会更新 View 。这意味着它为您提供了 JTextPane 上所需的输出,因此:

doc.insertString(doc.getLength(), "\t "+ "你"+ ": "+ GUI.getSendMessage() +("\n\t "+dateFormat.format(date)) ,样式);

足以将输出显示到文本 Pane 中。删除对 GUI.appendReceivedMessages(""+doc);

的调用

我相信您的目标是在文本 Pane 组件 - jTextPane1 上显示消息文本。您只需要为此更新 jTextPane1 的属性。您不需要更新任何其他内容。如果您需要发送文本数据,只需从该对象获取文本并将其传递给需要该值的方法:示例:

String text = jTextPane1.getDocument()
.getText(0, jTextPane1.getDocument()
.getLength());

aMethodThatExpectsAString(text);

关于java - jTextPane 颜色在聊天中有一些异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30188530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com