我正在与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弹出窗口中当前显示的月份) )。