JSpinner SpinnerDateModel问题

时间:2010-08-13 15:21:30

标签: java swing date jspinner

我正在尝试创建一个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 个答案:

答案 0 :(得分:2)

对我来说看起来像个错误。我弄乱了一些代码,看来无论你传递给setValue,我称之为value,必须至少有一个calendarField单位大于minTime

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

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

首先想到的解决方法是创建一个自定义SpinnerDateModel,它会覆盖getPreviousValue()setValue()方法,以手动检查所需的minTime