2

我想为文本区域中的特定行设置颜色。到目前为止,我发现的是以下内容

// Declarations
private final DefaultStyledDocument document;
private final MutableAttributeSet homeAttributeSet;
private final MutableAttributeSet awayAttributeSet;

// Usage in the form constructor
jTextAreaLog.setDocument(document);
homeAttributeSet = new SimpleAttributeSet();
StyleConstants.setForeground(homeAttributeSet, Color.blue);
StyleConstants.setItalic(homeAttributeSet, true);
awayAttributeSet = new SimpleAttributeSet();
StyleConstants.setForeground(awayAttributeSet, Color.red);

// Setting the style of the last line
final int start = jTextAreaLog.getLineStartOffset(jTextAreaLog.getLineCount() - 2);
final int length = jTextAreaLog.getLineEndOffset(jTextAreaLog.getLineCount() - 1) -     start;
document.setCharacterAttributes(start, length, awayAttributeSet, true);

但这不起作用。我究竟做错了什么?

编辑:好的,我一直在尝试并尝试使用

final int end = jTextAreaLog.getLineEndOffset(jTextAreaLog.getLineCount() - 1);
document.insertString(end, "someText", awayAttributeSet);

添加文本而不是添加然后重新设置样式,但无济于事。

4

2 回答 2

9

我不确定是否可以对 JTextArea 进行如此详细的样式设置,因为它可能会根据所选字体、颜色等设置整个文档的样式。使用 JTextPane/JEditorPane 可能会更幸运。

编辑:来自javadoc

JTextArea 是一个显示文本的多行区域。

(添加了重点。)

如果您可以移动到 JTextPane,那么它将呈现格式。

于 2010-05-14T22:30:29.297 回答
0

创建一个自定义的 swing 文档,例如 PlainDocument 扩展,并有一个自定义的 HighlightedView 负责绘制标记。

于 2010-05-16T00:59:53.857 回答