Я работаю с dayCellFactory для форматирования дисплея.Я реализовал отключение предыдущих дат, позволяя выбирать только понедельники и выделять период после выбора даты.
final Callback<DatePicker, DateCell> dayCellFactory = new Callback<DatePicker, DateCell>() {
@Override
public DateCell call(final DatePicker datePicker) {
return new DateCell() {
@Override
public void updateItem(LocalDate item, boolean empty) {
super.updateItem(item, empty);
if (item.isBefore(LocalDate.now().minusWeeks(1).plusDays(1))) {
setDisable(true);
setStyle("-fx-background-color: #d3d3d3;");
}
else if (item.getDayOfWeek() != DayOfWeek.MONDAY) {
setDisable(true);
}
if (selectedDate != null) {
LocalDate startDate = selectedDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
if (item.isAfter(startDate) && item.isBefore(startDate.plusWeeks(weeksInPeriod))) {
setStyle("-fx-background-color: #ffc0cb;");
}
}
}
};
}
};
Единственное, что я не могу понять, - это как отображать даты только текущего месяца.в моем календаре (не текущий месяц, как в LocalDate.now (). getMonth (), текущий месяц, отображаемый во всплывающем окне DatePicker).