首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -使用DocumentFilter限制允许的字符和长度

Java -使用DocumentFilter限制允许的字符和长度
EN

Stack Overflow用户
提问于 2022-07-13 23:38:10
回答 1查看 57关注 0票数 -1

是否可以使用单个DocumentFilter来限制允许的字符和JTextField中的字符数?我不知道如何做到这两者,我也没有找到任何完全工作的解决办法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-14 03:14:31

好吧,我终于明白它是怎么工作的了!我需要在if方法中使用replace(),因为这是每次用户输入/粘贴JTextField中任何内容时调用的代码

如果已插入的文本长度( limit;

  • otherwise,)之和到用户当前输入/粘贴(text.length())大于预期的限制(我将其设置为12个字符),则首先从用户输入(text.replaceAll(regex, ""))中删除任何无效字符,然后截断它,以便如果文本不超过该限制,则它不会超过该限制,只需删除任何可能的无效字符。

代码语言:javascript
复制
class NameFilter extends DocumentFilter {
    @Override
    public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
        int finalLength = fb.getDocument().getLength() + text.length();

        if(finalLength > 12) {
            fb.replace(offset, length, text.replaceAll("[^a-zA-Z0-9/&\\-':;.,?!@]", "").substring(0, 12-fb.getDocument().getLength()), attrs);
            Toolkit.getDefaultToolkit().beep();
        } else
            fb.replace(offset, length, text.replaceAll("[^a-zA-Z0-9/&\\-':;.,?!@]", ""), attrs);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72973728

复制
相关文章

相似问题

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