日期:2014-05-16  浏览次数:20323 次

JSpinner的输入限制实现
最近使用了JSpinner,需要限制其中数字部分。

final SpinnerModel model = new SpinnerNumberModel(minNumber, minNumber, maxNumber, 1);
        numberSpinner = new JSpinner(model);
        // 允许输入
        final JSpinner.NumberEditor editor = new JSpinner.NumberEditor(numberSpinner, "0");
        numberSpinner.setEditor(editor);
        final JFormattedTextField textField = ((JSpinner.NumberEditor)numberSpinner.getEditor()).getTextField();
        textField.setEditable(true);//开启输入功能
        // 开启输入的值的限制
        final DefaultFormatterFactory factory = (DefaultFormatterFactory)textField.getFormatterFactory();
        final NumberFormatter formatter = (NumberFormatter)factory.getDefaultFormatter();
        formatter.setAllowsInvalid(false);// 此处对输入的有效性进行控制。若改为true,则不控制有效性
1 楼 lishankang 2012-07-23  
http://topic.csdn.net/t/20040810/01/3258174.html
高手,我也在折腾这个东西呢,就是搞不定,没有想到可以将JFormattedTextField单独提出来进行设置。

但是我运行你的代码,发现里面最后一个数字清楚不掉,即我输入31,删除内容的时候,最后的3不能删除掉,请问怎么设置?