JavaFX DatePicker-控制上个月/下个月的日期的显示

时间:2019-06-10 12:07:50

标签: javafx datepicker

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

0 个答案:

没有答案