Избегая 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);