1

我有一个jSpinner这样的SpinnerNumberModel

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

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

我想我应该和extends SpinnerNumberModel方法...overridefireStateChanged()

但我不确定我需要用这种方法做什么。

谁能给我一些提示?

4

2 回答 2

3
  • 是的,解决方法很简单,

  • 有两种方法可以做到这一点,必须派生JTextFieldJFormattedTextField来自JSpinner

  • 然后添加

    一个)DocumentListener

    b)DocumentFilter

我认为DocumentFilter 的使用对于代码解决方法来说是最简单的,更好,也许更安全

于 2012-10-10T19:07:42.610 回答
2

您可以在微调器的格式化程序上尝试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);
于 2012-10-10T19:07:33.233 回答