1

我正在尝试创建一个 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"));

如果我将初始值设置为下限之前或之后的一分钟,它就可以正常工作。但是对于我的要求,我不希望那样。

帮助?

4

1 回答 1

3

对我来说似乎是一个错误。我弄乱了一些代码,看来无论您传递给什么setValue,我都会称之为value,必须至少calendarFieldminTime.

即,如果您使用model.setCalendarField(Calendar.YEAR),value则必须是 2011 年的任何日期,假设您使用 2010 年的日期minTime

根据 Sun 的说法,SpinnerDateModel 构造函数强制执行的不变量是minimum <= value <= maximum,所以这个问题不应该发生。

想到的第一个解决方法是创建一个自定义SpinnerDateModel,它覆盖getPreviousValue()setValue()方法来手动检查您想要的minTime.

于 2010-08-13T17:19:08.777 回答