我想为文本区域中的特定行设置颜色。到目前为止,我发现的是以下内容
// 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);
添加文本,而不是添加文本,然后重新样式,但无济于事。
我不确定JTextArea是否可以设置太多详细的样式,因为它可能是根据所选字体,颜色等为整个文档设置样式的。使用JTextPane / JEditorPane可能会有更多的运气。
编辑:从javadoc
JTextArea是显示 纯 文本的多行区域。
(重点已添加。)
如果可以移动到JTextPane,则将呈现格式。