【发布时间】:2015-03-16 02:18:32
【问题描述】:
如何将文本输入到 TextField 中的唯一有效字符是数字和字母?我看过很多答案,我尝试了其中一个,但由于某种原因,我不能使用退格键。课程如下。
private class NoSpaceField extends TextField {
public void replaceText(int start, int end, String text) {
String old = getText();
if (text.matches("[A-Za-z0-9\b]")) {
super.replaceText(start, end, text);
}
if (getText().length() > 16)
setText(old);
positionCaret(getText().length());
}
public void replaceSelection(String text) {
String old = getText();
if (text.matches("[A-Za-z0-9\b]")) {
super.replaceSelection(text);
}
if (getText().length() > 16)
setText(old);
positionCaret(getText().length());
}
}
我在正则表达式方面很糟糕,并且不知道如何将退格添加为有效字符。另外,我将上述类(稍作修改)用于不同的目的,并且效果很好。
【问题讨论】:
-
@chris85 我试过
[A-Za-z0-9\b],但没有做任何事情,增加反斜杠的数量只会引发 PatternSyntaxException 或没有做任何事情。