如何在JCalendar中仅显示今天日期之后的日期

时间:2012-04-05 01:36:12

标签: java swing date jcalendar

我试图限制用户仅选择今天之后的日期,或者选择另一个Date之后的日期 我看到JCalendar API 什么东西可以帮助我,但我没有发现任何东西..我怎么能这样做?

1 个答案:

答案 0 :(得分:7)

我认为组件没有直接的方法来做到这一点。 我知道的一种方法是使用setSelectableDateRange(Date from,Date to) - 当您将从日期设置为当前日期时,所有前一天的单元格,年/月下降都将被禁用。

示例:

    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);

这将禁用当前日期之前和2015年5月5日之后的任何日期的选择

请注意,此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",...);