我正在尝试创建一个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"));如果我将初始值设置为在下限之前或之后一分钟,则可以正常工作。但对于我的要求,我不想那样做。
帮助?
发布于 2010-08-14 01:19:09
在我看来像是个虫子。我摆弄了一些代码,似乎无论你传递给setValue的是什么,我都称之为value,它必须至少是一个大于minTime的calendarField单元。
也就是说,如果您使用的是model.setCalendarField(Calendar.YEAR),value必须是2011年的任何日期,假设您使用的是2010年的minTime日期。
根据Sun的说法,SpinnerDateModel构造函数强制执行的不变量是minimum <= value <= maximum,所以这个问题应该不会发生。
首先想到的解决办法是创建一个自定义的SpinnerDateModel,它覆盖getPreviousValue()和setValue()方法,以手动检查您想要的minTime。
https://stackoverflow.com/questions/3478297
复制相似问题