JSpinner SpinnerDateModel вопрос - PullRequest
       9

JSpinner SpinnerDateModel вопрос

1 голос
/ 13 августа 2010

Я пытаюсь создать JSpinner, чтобы пользователь мог выбрать дату. Я хочу, чтобы был нижний предел даты и верхний предел даты. Я также хочу, чтобы начальное значение было нижним пределом даты. К сожалению, моя проблема в том, что он не позволяет мне использовать нижний предел в качестве начального значения (JSpinner просто перестает отвечать) Вот мой код:

SpinnerDateModel model = new SpinnerDateModel();
model.setStart(minTime);  //lower limit
model.setEnd(maxTime);    //upper limit
model.setValue(minTime);  //doesn't like this!
model.setCalendarField(Calendar.MINUTE);
JSpinner timePicker = new JSpinner(model);
timePicker.setEditor(new JSpinner.DateEditor(timePicker, "HH:mm dd/MM/yy"));

Если я установлю начальное значение за одну минуту до или после нижнего предела, оно будет работать нормально. Но для моих требований я этого не хочу.

Помощь

1 Ответ

2 голосов
/ 13 августа 2010

Похоже, ошибка для меня. Я запутался с каким-то кодом, и кажется, что что бы вы ни передавали setValue, я назову его value, должно быть как минимум на calendarField единицу больше, чем minTime.

т.е. если бы вы использовали model.setCalendarField(Calendar.YEAR), value должна была бы быть любой датой в 2011 году, при условии, что вы использовали дату в 2010 году для minTime.

Согласно Sun, инвариант, применяемый конструкторами SpinnerDateModel, равен minimum <= value <= maximum, поэтому такой проблемы быть не должно.

Первый обходной путь, который приходит на ум, - это создание пользовательского SpinnerDateModel, который переопределяет методы getPreviousValue() и setValue() для ручной проверки на соответствие желаемому minTime.

...