JavaFX DatePicker 禁用未来日期

Gov*_*das 3 javafx javafx-datepicker

我想允许用户从 DateChooser 中选择截至当前日期的日期。如何禁用 JavaFX DatePicker 中的未来日期?

mat*_*kis 5

您应该设置一个 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 );
        }
    });
Run Code Online (Sandbox Code Playgroud)

PS:任何包含单元格的节点(TableView、DatePicker、ListView 等)都可以重写其updateItem方法,这允许您根据其数据配置该单元格的样式。谨慎使用,并始终确保包含super.updateItem()随附的产品。

  • @Govind_das 它调用该方法的超级实现。[根据记录](https://openjfx.io/javadoc/14/javafx.controls/javafx/scene/control/Cell.html#updateItem(T,boolean)),您必须调用超级实现,否则单元格可能会损坏。 (2认同)