首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StyledDocument的setCharacterAttributes() -去除不需要的行为

StyledDocument的setCharacterAttributes() -去除不需要的行为
EN

Stack Overflow用户
提问于 2013-10-06 20:39:05
回答 1查看 506关注 0票数 2
代码语言:javascript
复制
JTextPane pane = new JTextPane();
pane.setText("some text");
add(pane);

pane.addStyle("red", null);
Style red = pane.getStyle("red");
StyleConstants.setForeground(red, Color.RED);
pane.getStyledDocument().setCharacterAttributes(3, 1, red, true);

之后,该窗格的内容看起来没有问题:除了红色的“e”字符外,所有字符都是纯字符。但是当我在'e‘后面输入一些字符后,它也变红了。我如何摆脱这种行为?我只想设置给定字符的属性,我不希望它对其他人有任何影响。

EN

回答 1

Stack Overflow用户

发布于 2013-10-06 22:32:05

修改JTextPane的输入属性应该这样做:

代码语言:javascript
复制
pane.addCaretListener(new CaretListener() {
    public void caretUpdate(CaretEvent event) {
        final JTextPane textPane = (JTextPane) event.getSource();
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                MutableAttributeSet inputAttr =
                    textPane.getInputAttributes();
                inputAttr.removeAttribute(StyleConstants.Foreground);
            }
        });
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19208949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档