Как показать только дату после даты сегодня в JCalendar

Я пытаюсь ограничить пользователя, чтобы выбрать только дату после сегодняшнего дня, или выбрать дату за другим DateЯ вижу в JCalendar API что-то, что может мне помочь, но ничего не нашел.. как я могу это сделать?

1 ответ

Решение

Я не думаю, что есть прямой путь к компоненту, чтобы сделать это. Один из известных мне способов - это использовать 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);

Это отключит выбор любой даты до текущей даты и после 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",...);
Другие вопросы по тегам