如何在JCalendar中仅显示今天日期之后的日期
我试图限制用户只选择今天之后的Date
,或者选择我在JCalendar API上看到的另一个Date
之后的Date
可能对我有帮助,但我什么都没找到。我怎么能这样做?
我认为组件没有直接的方法来做到这一点。 我知道的一种方法是使用setSelectableDateRange(Date from,Date to)
– 当您将from日期设置为当前日期时,所有前一天的单元格,年/月下拉变为禁用。
例:
JCalendar calendar = new JCalendar(); calendar.setSelectableDateRange(new Date(),new SimpleDateFormat("MM-DD-YYYY").parse("05-05-2015")); PropertyChangeListener calendarChangeListener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { Date selectedDate = ((JCalendar)evt.getSource()).getDate(); } }; calendar.addPropertyChangeListener("calendar",calendarChangeListener);
这将禁用当前日期之前和05/05/2015之后的任何日期选择
请注意,此API未在其javadoc中记录。 但这仍然是一个按预期工作的公共制定者。
编辑,因为你想知道JDateChooser
如何在类似的上下文中使用
JDateChooser chooser = new JDateChooser(); chooser.getJCalendar().setSelectableDateRange(new Date(),new SimpleDateFormat("MM-DD-YYYY").parse("05-05-2015")); chooser.getJCalendar().addPropertyChangeListener("calendar",...);