Настройка диапазона означает просто отключение дат вне этого диапазона.Таким образом, процесс такой же, как и в связанном ответе .Вы можете создать служебный метод для создания фильтров проще.Например, configureShowRangeHandler
допускает Predicate<Date>
, который отключит дату, если предикат вернет false.enableUntilToday
- простой пример ограничения выбираемых дат до сегодняшнего дня.
{
DatePicker dp = new DatePicker();
Predicate<Date> enableUntilTodayDates = d -> !d.after(new Date());
configureShowRangeHandler(dp, enableUntilTodayDates);
}
static HandlerRegistration configureShowRangeHandler(DatePicker dp, Predicate<Date> fn) {
return dp.addShowRangeHandler(ev -> {
for (Date t = copyDate(ev.getStart()); t.before(ev.getEnd()); addDaysToDate(t, 1)) {
dp.setTransientEnabledOnDates(fn.test(t), t);
}
});
}
copyDate
и addDaysToDate
статически импортированы из CalendarUtil