Избегая JSpinner принимать письма

У меня есть jSpinner с SpinnerNumberModel как это:

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

Я просто хочу показать целые числа в счетчике, чтобы, если пользователь вставляет буквы, они не показывались.

Я думал, что должен extends SpinnerNumberModel а также override fireStateChanged() метод...

Но я не уверен, что мне нужно делать в этом методе.

Кто-нибудь может дать мне подсказку?

2 ответа

Решение
  • да возможно и обходной путь довольно прост,

  • Есть два способа, как это сделать, нужно вывести JTextField или же JFormattedTextField от JSpinner,

  • затем добавить

    а) DocumentListener

    б) DocumentFilter

Я думаю, что использование DocumentFilter проще всего для обхода кода, лучше, может быть, безопаснее

Вы можете попробовать установить 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);
Другие вопросы по тегам