1

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

在此处输入图像描述

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

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

agentTextPane.setForeground(Color.red);添加系统的文本后,然后切换回黑色,但这会更改JTextPane.

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

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

2 回答 2

2

如此处所示,您可以定义代表所需样式的属性集。例如,

StyledDocument doc = (StyledDocument) jtp.getDocument();
SimpleAttributeSet system = new SimpleAttributeSet();
StyleConstants.setFontFamily(system, "Serif");
StyleConstants.setForeground(system, Color.red);
doc.insertString(doc.getLength(), "...", system);

样式可以是渐进式的,如此处所示。

图片

有关更多示例,请参阅文本组件功能

于 2013-04-14T10:00:31.850 回答
2

您可能希望使用 HTML 标记来根据颜色格式化您的字符串。以下参考资料可能有用。将 JTextPane 设置为内容类型 HTML 并使用字符串构建器

 output.append("<font color=\"red\">");
 output.append("\nSystem: ").append(tempOutput).append("\n");
 output.append("</font>");
于 2013-04-14T10:02:13.797 回答