gpt4 book ai didi

java - Swing GUI 在 JTextPane 中附加彩色文本

转载 作者:行者123 更新时间:2023-11-29 03:18:14 25 4
gpt4 key购买 nike

public static void setJTextPaneFont(JTextPane jtp, Color c, int from, int to) {
// Start with the current input attributes for the JTextPane. This
// should ensure that we do not wipe out any existing attributes
// (such as alignment or other paragraph attributes) currently
// set on the text area.
MutableAttributeSet attrs = jtp.getInputAttributes();

// Set the font color
StyleConstants.setForeground(attrs, c);

// Retrieve the pane's document object
StyledDocument doc = jtp.getStyledDocument();

// Replace the style for the entire document. We exceed the length
// of the document by 1 so that text entered at the end of the
// document uses the attributes.
doc.setCharacterAttributes(from, to, attrs, false);
}

上述代码的目的是改变两个索引(from 和 to)之间特定代码行的颜色。调用此函数后,JTextPane 中的文本和颜色会正确更新(特定行)。

enter image description here

但是,当我尝试用新文本刷新 JTextPane 时(通过清空 jtextpane 并重新附加新文本),所有文本都会自动绘制成颜色最后在使用 setJTextPaneFont 调用时分配。

enter image description here

基本上,整个文档(新文档)不是只有几条彩色线条,而是在不调用上面的函数的情况下变成彩色的。因此我怀疑 JTextPane 的属性以某种方式被修改了。

所以问题是,我怎样才能将 JTextPane 重置为默认属性?

最佳答案

清空 jtextpane 并重新添加新文本问题可以通过多种方式解决:

调用 doc.setCharacterAttributes(0, 1, attrs, true);并在此处传递一个空的 AttributeSet

重新创建文档,而不是 doc.remove()/insert() 调用 jtp.setDocument(jtp.getEditorKit().createDefaultDocument())

清除输入属性。添加插入符监听器并检查文档是否为空。当它为空时,删除所有需要的属性。

关于java - Swing GUI 在 JTextPane 中附加彩色文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25240557/

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