我有jSpinner
SpinnerNumberModel
,如下所示:
spinnerModelFix = new SpinnerNumberModel(0, 0, 65535, 1);
JSpinner fixedValueSpinner = new JSpinner(spinnerModelFix);
我只想在微调器中显示整数,这样如果用户插入字母就不会显示。
我认为我应该extends SpinnerNumberModel
和override
fireStateChanged()
方法......
但我不确定该方法需要做什么。
任何人都可以给我一些提示吗?
答案 0 :(得分:3)
是可以的,解决方法非常简单,
有两种方法,必须从JTextField
派生JFormattedTextField
或JSpinner
,
然后添加
a)DocumentListener
b)DocumentFilter
我认为使用DocumentFilter is easiest for code workaround, better, maybe safer
答案 1 :(得分:2)
您可以在spinner的格式化程序上尝试setAllowsInvalid(false)。例如:
SpinnerNumberModel spinnerModelFix = new SpinnerNumberModel(0, 0, 65535, 1);
JSpinner fixedValueSpinner = new JSpinner(spinnerModelFix);
JFormattedTextField textField = ((JSpinner.NumberEditor) fixedValueSpinner
.getEditor()).getTextField();
((NumberFormatter) textField.getFormatter()).setAllowsInvalid(false);