1

我试图限制用户只选择今天之后的日期,或者选择另一个日期Date 我在JCalendar API上看到 一些可以帮助我的东西,但我什么也没找到。我该怎么做?

4

1 回答 1

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",...);
于 2012-04-05T05:16:24.343 回答