如何在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",...);