如何为NumberFormatter添加空字符串例外规则
如何为NumberFormatter添加空字符串例外规则
嘿,我来帮你搞定这个问题!你现在的代码已经能让输入框只接受整数了,但如果想允许用户输入空字符串的话,得稍微调整一下NumberFormatter的配置——因为你设置了setAllowsInvalid(false),默认会把空输入也判定成无效的。
这里有个简单有效的方法,通过重写NumberFormatter的stringToValue方法,给空字符串开个“特例”,同时保留对整数输入的严格验证:
NumberFormat integerFormat = NumberFormat.getIntegerInstance(); // 自定义NumberFormatter,处理空字符串情况 NumberFormatter integerFormatter = new NumberFormatter(integerFormat) { @Override public Object stringToValue(String text) throws ParseException { // 如果输入是空或者全是空格,返回null(也可以返回0,根据你的业务需求调整) if (text == null || text.trim().isEmpty()) { return null; } // 非空内容交给父类处理,保证只能解析整数 return super.stringToValue(text); } }; integerFormatter.setValueClass(Integer.class); integerFormatter.setAllowsInvalid(false); // 依然保持拒绝无效整数输入的规则 // 后续创建输入框的代码不变 txt_phoneNumber = new JFormattedTextField(integerFormatter); lbl_phoneNumber.setBounds(170, 100, 100, 20); add(lbl_phoneNumber); txt_phoneNumber.setBounds(170, 120, 180, 20); add(txt_phoneNumber);
这样调整后,用户既可以输入合法的整数,也可以输入空字符串(或者全空格的内容),而其他非整数的内容依然会被输入框直接拒绝,完全符合你的需求。
备注:内容来源于stack exchange,提问作者TVXD
相关产品推荐
相关产品推荐

