JavaFX DatePicker 禁用未来日期

JavaFX DatePicker disable future dates

我想允许用户 select 从 DateChooser 到当前日期。如何在 JavaFX 的 DatePicker 中禁用未来日期?

您应该设置一个 DayCellFactory。这允许您基本上控制日期选择器的所有样式元素,包括是否将指定日期之后的日期显示为灰色。

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:任何包含单元格的节点(TableView、DatePicker、ListView 等)都可以覆盖其 updateItem 方法,这允许您根据其配置该单元格的样式数据。请谨慎使用,并始终确保包含它附带的 super.updateItem()