【发布时间】:2020-06-19 15:26:44
【问题描述】:
我正在尝试创建一个选择多个日期的 DatePicker。我可以选择多个日期,但我希望在选择日期时保持 DatePicker 处于打开状态。问题是,每次我选择日期时,DatePicker 都会关闭。
我不想使用私有 API。我正在考虑添加这个:
datePicker.setOnHiding(event -> {
event.consume();
});
但它不起作用。
这是我的代码:
public static DatePicker getDatePicker() {
ObservableList<LocalDate> selectedDates = FXCollections.observableArrayList();
String pattern = "yyyy-MM-dd";
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern);
DatePicker datePicker = new DatePicker();
datePicker.setPromptText(pattern);
datePicker.setConverter(new StringConverter<LocalDate>() {
@Override
public String toString(LocalDate date) {
return (date == null) ? "" : dateFormatter.format(date);
}
@Override
public LocalDate fromString(String string) {
return ((string == null) || string.isEmpty()) ? null : LocalDate.parse(string, dateFormatter);
}
});
datePicker.setOnAction(event -> {
selectedDates.add(datePicker.getValue());
event.consume();
});
datePicker.setDayCellFactory((DatePicker param) -> new DateCell() {
@Override
public void updateItem(LocalDate item, boolean empty) {
super.updateItem(item, empty);
boolean alreadySelected = selectedDates.contains(item);
setDisable(alreadySelected);
setStyle(alreadySelected ? "-fx-background-color: #09a30f;" : "");
}
});
return datePicker;
}
【问题讨论】:
标签: java javafx datepicker date-range