如何在不在文本框中设置任何值的情况下将JavaFX DatePicker编辑器显示/打开到特定的日历日期?

时间:2016-10-19 18:18:36

标签: javafx javafx-datepicker

我希望为时间范围Jan 2000 - Dec 2014启用日期选择,并禁用此范围之外的日期,并希望将DatePicker编辑器打开到此范围内的日期,而不设置值(setValue()或Constructor) ,因为我希望文本框为空。可以这样做吗?

1 个答案:

答案 0 :(得分:0)

您可以通过构造函数或setValue设置所需日期,并使用picker.getEditor().clear()清除文本框。 要从外部禁用日期,您可以设置自定义DateCellFactory:

    LocalDate minDate = LocalDate.of(2000, Month.JANUARY, 1);
    LocalDate maxDate = LocalDate.of(2014, Month.DECEMBER, 31);
    DatePicker picker = new DatePicker(minDate.plusYears(2));
    picker.setDayCellFactory((p) -> new DateCell() {
        @Override
        public void updateItem(LocalDate ld, boolean bln) {
            super.updateItem(ld, bln);
            setDisable(ld.isBefore(minDate) || ld.isAfter(maxDate));
        }
    });
    Platform.runLater(() -> {
        picker.getEditor().clear();
    });