我必须验证一个 java 文本字段
,它只接受最大长度为 10 的整数值。必须跳过输入其他值。
我尝试了如下。在这种情况下,我无法输入句号。
private void jTextField2KeyTyped(java.awt.event.KeyEvent evt) {
char c = evt.getKeyChar();
if(!(Character.isDigit(c) || (c==KeyEvent.VK_BACK_SPACE)||(c==KeyEvent.VK_STOP ) )){
getToolkit().beep();
evt.consume();
}
}
最佳答案
为此,您可以使用 DocumentFilter
,如下所示:
JTextField f = new JTextField(10);
((AbstractDocument)f.getDocument()).setDocumentFilter(new DocumentFilter(){
Pattern pattern = Pattern.compile("\\d*");
@Override
public void replace(FilterBypass arg0, int arg1, int arg2, String arg3, AttributeSet arg4) throws BadLocationException {
String text = arg0.getDocument().getText(0, arg0.getDocument().getLength())+arg3;
Matcher matcher = pattern.matcher(text);
if(!matcher.matches()){
return;
}
if(text.length()>10){
return;
}
super.replace(arg0, arg1, arg2, arg3, arg4);
}
});
关于Java 文本字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20469163/