我特别需要防止用户输入将来的日期/时间。这与禁用特定日期不同,因为我需要在特定日期中禁用所有日期。
理想情况下,应该禁用将来的任何日期。现在,我只是在用户输入无效时间时阻止表单提交,但是禁用不需要的日期会更好。
我遍历了Javadoc,却一无所获。可能吗?怎么样?
答案 0 :(得分:2)
配置范围仅意味着禁用该范围以外的日期。因此,该过程与linked answer中的过程相同。您可以创建一个实用程序方法来轻松创建过滤器。例如,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