是否可以使用单个DocumentFilter来限制允许的字符和JTextField中的字符数?我不知道如何做到这两者,我也没有找到任何完全工作的解决办法。
发布于 2022-07-14 03:14:31
好吧,我终于明白它是怎么工作的了!我需要在if方法中使用replace(),因为这是每次用户输入/粘贴JTextField中任何内容时调用的代码
如果已插入的文本长度( limit;
text.length())大于预期的限制(我将其设置为12个字符),则首先从用户输入(text.replaceAll(regex, ""))中删除任何无效字符,然后截断它,以便如果文本不超过该限制,则它不会超过该限制,只需删除任何可能的无效字符。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);
}
}https://stackoverflow.com/questions/72973728
复制相似问题