JavaFX DatePicker disable future dates

Viewed 1046

I want to allow user to select date from DateChooser upto current date. How can I disable future dates in DatePicker of JavaFX?

1 Answers

You should set a DayCellFactory. This allows you to control essentially all style elements of the datepicker, including whether or not dates after a specified date are greyed out.

datePicker.setDayCellFactory(param -> new DateCell() {
        @Override
        public void updateItem(LocalDate date, boolean empty) {
            super.updateItem(date, empty);
            setDisable(empty || date.compareTo(LocalDate.now()) > 0 );
        }
    });

PS: any node that has cells in it (TableView, DatePicker, ListView etc) can have its updateItem method overridden, which allows you to configure the style of that cell based on its data. Use with caution, and always make sure you include the super.updateItem() that comes with it.

Related