如果要禁用多个日期范围,则可以创建以下POJO:
class DisabledRange { private final LocalDate initialDate; private final LocalDate endDate; public DisabledRange(LocalDate initialDate, LocalDate endDate){ this.initialDate=initialDate; this.endDate = endDate; } public LocalDate getInitialDate() { return initialDate; } public LocalDate getEndDate() { return endDate; }}现在,您可以定义要在日历中禁用的范围的集合。例如:
private final ObservableList<DisabledRange> rangesToDisable = FXCollections.observableArrayList( new DisabledRange(LocalDate.of(2014,10,17), LocalDate.of(2014,10,19)), new DisabledRange(LocalDate.of(2014,10,27), LocalDate.of(2014,10,29)));
最后,您只需要检查中
Callback是否在
item以下范围内:
@Overridepublic void updateItem(LocalDate item, boolean empty) { super.updateItem(item, empty); boolean disable = rangesToDisable.stream() .filter(r->r.initialDate.minusDays(1).isBefore(item)) .filter(r->r.endDate.plusDays(1).isAfter(item)) .findAny() .isPresent(); if (item.isBefore(checkInDatePicker.getValue().plusDays(1)) || disable) { setDisable(true); setStyle("-fx-background-color: #ffc0cb;"); } ...}


