首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DocumentListener限制字符-影响复制/粘贴

DocumentListener限制字符-影响复制/粘贴
EN

Stack Overflow用户
提问于 2013-10-05 00:08:25
回答 1查看 372关注 0票数 0

我有一个将所有文本转换为大写的DocumentLitener,它还限制了可以输入的文本量。下面是我的类:

公共类UppercaseDocumentFilter扩展了DocumentFilter {

代码语言:javascript
复制
private int limit;

public UppercaseDocumentFilter(int maxCharacters) {
    limit = maxCharacters;
}

@Override
public void insertString(DocumentFilter.FilterBypass fb, int offset, String text, AttributeSet attr) throws BadLocationException {
    if (fb.getDocument().getLength() + text.length() > limit) {
        return;
    }
    fb.insertString(offset, text.toUpperCase(), attr);

}

@Override
public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
    if (fb.getDocument().getLength() + text.length() > limit) {
        return;
    }
    fb.replace(offset, length, text.toUpperCase(), attrs);
}

@Override
public void remove(DocumentFilter.FilterBypass fb, int offset, int length) throws BadLocationException {
    fb.remove(offset, length);
}

}

我的问题是。假设文本字段限制为10个字符,我输入5个字符。然后我复制一个6个字符的单词。我在字段中选择(全选)文本,并尝试粘贴6个字符的单词,替换5个字符的单词。但是,它不允许我这样做,我只能假设这是由于DocumentListener认为我正在执行的5+6超过了10个字符的限制。

对此有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2013-10-05 00:23:13

限制if (fb.getDocument().getLength() + text.length() >

)

您的计算没有考虑将被删除的字符数,如替换(...)的length参数所指定的方法。

请看Swing教程中的Implementing a Document Filter示例以获得解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19185892

复制
相关文章

相似问题

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