jTextPane 颜色在聊天中有一些例外
jTextPane color with some exception in chat
我正在使用 jTextPane 来使用发送者和接收者的聊天颜色。一切正常,但 javax.swing.text.DefaultStyledDocument@123456
每条聊天消息。
这里 Jhon 是接收者,peter 是发送者
这里 peter 是接收者,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){}
这是我获取这些内容的主要 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
我猜你可以这样做:
请注意 StyledDocument
的 insertString
API 更新了视图。这意味着它为您提供了 JTextPane
上所需的输出,因此:
doc.insertString(doc.getLength(), "\t " + "You" + " : " + GUI.getSendMessage() +("\n \t "+dateFormat.format(date)) ,style);
足以将输出带到文本窗格。删除对 GUI.appendReceivedMessages(""+doc);
的调用
我相信您的目的是在文本窗格组件上显示消息文本 - jTextPane1
。您只需要为此更新 属性 of jTextPane1
。您不需要更新任何其他内容。如果您需要发送文本数据,只需从该对象中获取文本并将其传递给需要该值的方法:示例:
String text = jTextPane1.getDocument()
.getText(0, jTextPane1.getDocument()
.getLength());
aMethodThatExpectsAString(text);
我正在使用 jTextPane 来使用发送者和接收者的聊天颜色。一切正常,但 javax.swing.text.DefaultStyledDocument@123456
每条聊天消息。
这里 Jhon 是接收者,peter 是发送者
这里 peter 是接收者,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){}
这是我获取这些内容的主要 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
我猜你可以这样做:
请注意 StyledDocument
的 insertString
API 更新了视图。这意味着它为您提供了 JTextPane
上所需的输出,因此:
doc.insertString(doc.getLength(), "\t " + "You" + " : " + GUI.getSendMessage() +("\n \t "+dateFormat.format(date)) ,style);
足以将输出带到文本窗格。删除对 GUI.appendReceivedMessages(""+doc);
我相信您的目的是在文本窗格组件上显示消息文本 - jTextPane1
。您只需要为此更新 属性 of jTextPane1
。您不需要更新任何其他内容。如果您需要发送文本数据,只需从该对象中获取文本并将其传递给需要该值的方法:示例:
String text = jTextPane1.getDocument()
.getText(0, jTextPane1.getDocument()
.getLength());
aMethodThatExpectsAString(text);