对该要求尚不完全确定-假设您要防止输入无法解析为有效Number的字符。
如果是这样,可以轻松使用Spinner编辑器中的TextFormatter:有了它,您将监视文本的任何更改并接受或拒绝。该决定封装在格式器的过滤器中。一个非常简单的版本(肯定还有更多事情要做,请参见Swing的DefaultFormatter)
// get a localized format for parsingNumberFormat format = NumberFormat.getIntegerInstance();UnaryOperator<TextFormatter.Change> filter = c -> { if (c.isContentChange()) { ParsePosition parsePosition = new ParsePosition(0); // NumberFormat evaluates the beginning of the text format.parse(c.getControlNewText(), parsePosition); if (parsePosition.getIndex() == 0 || parsePosition.getIndex() < c.getControlNewText().length()) { // reject parsing the complete text failed return null; } } return c;};TextFormatter<Integer> priceFormatter = new TextFormatter<Integer>( new IntegerStringConverter(), 0, filter);spinner.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory( 0, 10000, Integer.parseInt(INITAL_VALUE)));spinner.setEditable(true);spinner.getEditor().setTextFormatter(priceFormatter);


