首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向Documentfilter添加回退空间

向Documentfilter添加回退空间
EN

Stack Overflow用户
提问于 2013-12-02 08:52:24
回答 1查看 254关注 0票数 0

我有一个程序,它从JTextField中删除所有非数字字符,并将其限制在5位以内。但是这个文档过滤器也删除了backspace函数,这意味着我无法编辑我所做的输入。如何在不删除筛选器的情况下再次添加回退空间?

编辑:谢谢你的回答。我已经将这个功能添加到“公共无效删除”中,现在我的删除工作又开始了。但我注意到它将我的文本输入向后存储。如果我写"12345“,然后使用我的(int -1),它会删除"1",然后"2”等等。它为什么要这么做?

代码语言:javascript
复制
public class onlyNumericDocumentFilter extends DocumentFilter {

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

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

      //edit: 
          fb.remove(length-1, 1);  


       // fb.insertString(offset, "", null);
    }

    @Override
    public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
            String text, AttributeSet attr) throws BadLocationException {
        if (fb.getDocument().getLength() + text.length() > 5) {
            return;
        }
        fb.insertString(offset, text.replaceAll("\\D", ""), attr);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-02 08:57:44

你在这里禁止移除

代码语言:javascript
复制
public void remove(DocumentFilter.FilterBypass fb, int offset, int length) throws BadLocationException 
        {  
            fb.insertString(offset, "", null);
        }  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20324184

复制
相关文章

相似问题

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