Как показать только дату после даты сегодня в 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",...);