Я хочу иметь JSpinner, который отображает последовательность чисел без шаблона (скажем, последовательность простых чисел). Этот шаблон слишком сложен для SpinnerNumberModel, поэтому я решил создать подкласс SpinnerListModel. Конструктор выглядит примерно так:
public CustomSpinnerListModel() {
Vector<Integer> values = new Vector<Integer>();
values.add(1);
values.add(3);
values.add(5);
values.add(7);
this.setList(values);
}
Это прекрасно генерирует модель, и я могу перемещаться по значениям с помощью кнопок на JSpinner. Однако ввод значения не работает. Например, если счетчик установлен на 3 и я набираю 7, он остается на 3 (предположительно, потому что он не считает, что 7 является допустимым значением). Это работает с SpinnerNumberModel, поэтому я не уверен, что происходит.
РЕДАКТИРОВАТЬ: я обнаружил, что если я сохраню числа как строковые значения, ввод будет работать. Однако SpinnerNumberModel сохраняет все как целые числа, и это тоже работает. Поэтому я не уверен, почему мои целые числа не работают, но SpinnerNumberModel работает.
JSpinner#commitEdit
вызываетDefaultEditor#commitEdit
(это получается приведениемJSpinner#getEditor
, иначе ничего не происходит), который вызываетDefaultEditor#getTextField()#comitEdit
, который вызываетJFormattedTextField#getFormatter#stringToValue
....так. Я думаю, из того набега. Я бы искал реализациюAbstractFormatter
для вашей модели...: P - person MadProgrammer   schedule 13.03.2013