首页 > 解决方案 > 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 弹出窗口中当前显示的月份)。

标签: javafxdatepicker

解决方案


推荐阅读