You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:53:11