我正在尝试创建一个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"));
如果我将初始值设置为下限之前或之后的一分钟,则可以正常工作。但是根据我的要求,我不希望这样。
帮助?
答案 0 :(得分:2)
对我来说看起来像个错误。我弄乱了一些代码,看来无论你传递给setValue
,我称之为value
,必须至少有一个calendarField
单位大于minTime
。
即。如果您使用了model.setCalendarField(Calendar.YEAR)
,则value
必须是2011年的任何日期,假设您在2010年使用minTime
的日期。
根据Sun的说法,SpinnerDateModel构造函数强制执行的不变量为minimum <= value <= maximum
,所以不应该发生这个问题。
首先想到的解决方法是创建一个自定义SpinnerDateModel
,它会覆盖getPreviousValue()
和setValue()
方法,以手动检查所需的minTime
。