避免JSpinner接受字母

时间:2012-10-10 18:08:16

标签: java swing jspinner

我有jSpinner SpinnerNumberModel,如下所示:

spinnerModelFix = new SpinnerNumberModel(0, 0, 65535, 1);
JSpinner fixedValueSpinner = new JSpinner(spinnerModelFix);

我只想在微调器中显示整数,这样如果用户插入字母就不会显示。

我认为我应该extends SpinnerNumberModeloverride fireStateChanged()方法......

但我不确定该方法需要做什么。

任何人都可以给我一些提示吗?

2 个答案:

答案 0 :(得分:3)

  • 是可以的,解决方法非常简单,

  • 有两种方法,必须从JTextField派生JFormattedTextFieldJSpinner

  • 然后添加

    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);