我正在构建一个小型会话代理,其中的文本如下所示:
我想将系统的文本设置为始终为红色。该文本全部放在JTextPane中。
我怎样才能做到这一点?我尝试过以下操作:
添加系统文本后 agentTextPane.setForeground(Color.red);
,然后切换回黑色,但会更改JTextPane
中的所有文字。
这是添加系统文本的方式:
//'output' is a stringBuilder
output.append("\nSystem: ").append(tempOutput).append("\n");
agentTextPane.setText(output.toString());
答案 0 :(得分:2)
如图here所示,您可以定义表示所需样式的属性集。例如,
StyledDocument doc = (StyledDocument) jtp.getDocument();
SimpleAttributeSet system = new SimpleAttributeSet();
StyleConstants.setFontFamily(system, "Serif");
StyleConstants.setForeground(system, Color.red);
doc.insertString(doc.getLength(), "...", system);
样式可以是渐进式的,如here所示。
有关更多示例,请参阅Text Component Features。
答案 1 :(得分:2)
您可能希望使用HTML标记根据颜色设置字符串的格式。以下参考可能有用。 setting JTextPane to content type HTML and using string builders
output.append("<font color=\"red\">");
output.append("\nSystem: ").append(tempOutput).append("\n");
output.append("</font>");