gpt4 book ai didi

java - 附加新字符串时,JTextPane 中的彩色文本变得困惑

转载 作者:行者123 更新时间:2023-12-01 12:48:56 24 4
gpt4 key购买 nike

我正在使用 GUI 实现 SNMP 监听器。 GUI 应该根据其严重性以不同颜色打印已解析的 SNMP 陷阱。为此,我使用了 JTextPane。

现在程序已完全运行,我可以附加不同颜色的陷阱。

但是颜色会改变并且文本会变得困惑,因此有时在附加新字符串时无法读取。例如,某些新附加的行采用旧附加行的颜色,反之亦然。另外,我使用的红色变成了深红色,并且文本是“污迹”,文本没有锐利的线条。调整窗口大小时,这些问题会消失,但在滚动或附加新信息时又会出现。

我尝试过重新绘制,也尝试过添加背景颜色,但没有什么区别。

还有人遇到这个问题吗?

这是我用来附加文本的代码:

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);
}
}

它正在工作,唯一的问题是滚动或附加新文本时文本会变得困惑。搞砸了我的意思是:
- 行的上半部分或下半部分消失(留下一半不可读的字母)
- 文本部分改变颜色(某些部分的红色变成深红色)
- 两行互相改变颜色。 (绿色部分获得红色行,红色部分获得绿色行)
- 字母看起来很脏(字母没有锋利的线条)

调整窗口大小时,所有这些问题都会消失,但在滚动或附加新文本时会再次出现。

最佳答案

For example some newly appended line take the color of an old appended line and vice versa

是的,插入的文本将继承先前文本的属性,除非您指定插入文本的属性。

在文本 Pane 末尾附加文本的基本代码如下:

//  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 );
}

. Also the red I am using becomes dark red, and the text is "smudgy", io the text does not have sharp lines

也许您正在使用透明背景。请参阅Backgrounds With Transparency这样做时遇到问题。

如果您需要更多帮助,请发布适当的 SSCCE对于这个和所有 future 的问题。

关于java - 附加新字符串时,JTextPane 中的彩色文本变得困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24408501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com