使用JSpinner控制用户的输入的方法

最近用到JSpinner,但是不能控制用户输入。

比如使用SpinnerNumberModel,虽然设置了minmax,但是还是可以输入超出范围的数值,还可以输入字母,这些都应该是屏蔽掉的。

采用了下面的方法来解决:
   spinner.setBounds(x,y,width,height);
   // 控制输入
   JSpinner.NumberEditor editor = new JSpinner.NumberEditor(spinner, "0");
   spinner.setEditor(editor);
   JFormattedTextField textField = ((JSpinner.NumberEditor) spinner.getEditor()).getTextField();
   textField.setEditable(true);
   DefaultFormatterFactory factory = (DefaultFormatterFactory) textField .getFormatterFactory();
   NumberFormatter formatter = (NumberFormatter) factory.getDefaultFormatter();
   formatter.setAllowsInvalid(false);
   add(spinner);
 
这样输入就不可以输入字母了,因为设置了输入格式。超过范围的数值也是输入不进去的。
只不过这里用的是NumberFormatter ,还有其他类型的。

JSpinner spinner = new JSpinner(new SpinnerNumberModel(value, min, max, 1));

你可能感兴趣的:(使用JSpinner控制用户的输入的方法)