Java JTextPane通过setCharacterAttributes删除背景集

Java JTextPane通过setCharacterAttributes删除背景集,java,swing,jtextpane,styleddocument,Java,Swing,Jtextpane,Styleddocument,我正在使用自己的编辑器,我想为用户可能搜索的文本添加背景色。查找文本并设置背景色不是问题,问题是当焦点(突出显示)移动时,如何删除背景色 这将设置突出显示: int findPos = /* start position of user search text */ int findLength = /* length of user search text */ SimpleAttributeSet highlight = new SimpleAttributeSet(); StyleCon

我正在使用自己的编辑器,我想为用户可能搜索的文本添加背景色。查找文本并设置背景色不是问题,问题是当焦点(突出显示)移动时,如何删除背景色

这将设置突出显示:

int findPos = /* start position of user search text */
int findLength = /* length of user search text */

SimpleAttributeSet highlight = new SimpleAttributeSet();
StyleConstants.setBackground(highlight, Color.CYAN);
StyledDocument doc = jtextpane.getStyleDocument();
doc.setCharacterAttributes(findPos, findLength, highlight, false);
但是,如何在不影响前景颜色的情况下再次删除高光?因为编辑器支持语法高亮显示,所以前景颜色可以是任何颜色


我能想到的唯一一件事就是简单地重置整个
StyledDocument
,然后再次在整个内容上运行highlight方法。。。但这似乎是一个非常低效的想法。

与其玩弄属性,不如使用文本窗格的
荧光灯。这将允许您独立添加/删除高光。您好@camickr谢谢,从我刚才的快速测试来看,它似乎很有用:)