如何从某一点向前设置文本的颜色

时间:2013-04-14 09:46:48

标签: java swing netbeans colors jtextpane

我正在构建一个小型会话代理,其中的文本如下所示:

enter image description here

我想将系统的文本设置为始终为红色。该文本全部放在JTextPane中。

我怎样才能做到这一点?我尝试过以下操作:

添加系统文本后

agentTextPane.setForeground(Color.red);,然后切换回黑色,但会更改JTextPane中的所有文字。

这是添加系统文本的方式:

//'output' is a stringBuilder
output.append("\nSystem: ").append(tempOutput).append("\n");
agentTextPane.setText(output.toString());

2 个答案:

答案 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所示。

image

有关更多示例,请参阅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>");