我正在使用jTextPane来使用发送者和接收者聊天颜色。一切正常,但javax.swing.text.DefaultStyledDocument@123456
包含每条聊天消息。
这里Jhon是复活者,彼得是发件人
这里peter是revceiver而Jhon是发件人
可能是我在代码中犯了一些错误。
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){}
public void appendReceivedMessages(String s) {
try {
Document doce = jTextPane1.getDocument();
doce.insertString(doce.getLength(), s+"\n", null);
} catch(BadLocationException exc) {
}
}
答案 0 :(得分:2)
这是显而易见的 - 不确定是否有资格获得答案。反正
你为什么要做GUI.appendReceivedMessages(""+doc);
?这导致doc
对象的默认toString
出现。希望有所帮助
修改强>
所以我能在这做什么
我想你可以这样做:
请注意,StyledDocument
的{{1}} API会更新视图。这意味着它为insertString
提供了所需的输出:
JTextPane
足以将输出打开到文本窗格。移除对doc.insertString(doc.getLength(), "\t " + "You" + " : " + GUI.getSendMessage() +("\n \t "+dateFormat.format(date)) ,style);
我相信您的目标是在文本窗格组件GUI.appendReceivedMessages(""+doc);
上显示消息文本。你只需更新jTextPane1
的属性即可。您无需更新任何其他内容。如果需要发送文本数据,只需从该对象获取文本并将其传递给期望值的方法:example:
jTextPane1