private void appendToPane(String msg, JTextPane p, Color c) {
Style style = p.addStyle("I am a style", null);
StyleConstants.setForeground(style, c);
StyledDocument doc = p.getStyledDocument();
try {
doc.insertString(doc.getLength(), msg, style);
} catch (Exception e) {
System.err.println(e);
}
}
它是工作的,唯一的问题是文本得到混乱时滚动或追加新的文本。我的意思是:
-一行的上半部分或下半部分消失(留下一半不可读的字母)
-文本部分改变颜色(某些部分红色变为暗红色)
-两行相互改变颜色。(绿色部分得到红色行,红色部分得到绿色行)
-字母看起来脏兮兮的(字母没有清晰的线条)
所有这些问题在调整窗口大小时消失,但在滚动或追加新文本时再次出现。
例如,一些新追加的行采用旧追加行的颜色,反之亦然
是,插入的文本将继承上一个文本的属性,除非您为插入的文本指定了属性。
在文本窗格末尾追加文本的基本代码如下所示:
// Define a keyword attribute
SimpleAttributeSet keyWord = new SimpleAttributeSet();
StyleConstants.setForeground(keyWord, Color.RED);
StyleConstants.setBackground(keyWord, Color.YELLOW);
StyleConstants.setBold(keyWord, true);
// Adding a new line of text
try
{
StyledDocument doc = textPane.getStyledDocument();
doc.insertString(doc.getLength(), "\nEnd of text", keyWord );
}