我只希望用户选择今天+ future 10 天的日期。但正如您所看到的,它在当月运行得非常好。但在 2 月,您可以再次选择日期,尽管它们是在我希望可选择的 10 天之后。我只想制作17.1。 - 27.1。可选择。
这就是我尝试过的:(这看起来不太好,但足以说明问题并让你们帮助我。)
@Override
public void start(Stage stage) throws IOException {
DatePicker dpDate = new DatePicker();
dpDate.setDayCellFactory(param -> new DateCell() {
@Override
public void updateItem(LocalDate date, boolean empty) {
super.updateItem(date, empty);
setDisable(empty || date.compareTo(LocalDate.now()) > 10 || date.compareTo(LocalDate.now()) < 0);
}
});
Scene scene = new Scene(dpDate, 320, 240);
stage.setTitle("Hello!");
stage.setScene(scene);
stage.show();
}
最佳答案
LocalDate.compareTo()
仅保证返回负数、零或正数,具体取决于日期是在提供的日期之前、等于还是之后。无法保证(或期望)它返回两个日期之间的天数。
使用
dpDate.setDayCellFactory(param -> new DateCell() {
@Override
public void updateItem(LocalDate date, boolean empty) {
super.updateItem(date, empty);
setDisable(empty ||
date.isBefore(LocalDate.now()) ||
date.isAfter(LocalDate.now().plusDays(10))
);
}
});
关于javafx - 使用 javafx 将 DatePicker 中的日期变灰无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75150785/