【发布时间】:2017-05-21 00:46:13
【问题描述】:
我正在使用 javafx 开发日历应用程序。约会的日期通过日期选择器添加到数据库中。约会应从数据库中检索并显示在三个日期选择器皮肤中。
我希望日期选择器皮肤显示多个选定的日期,在各自的日期/日期显示该月的所有约会。
下面的代码实现了在日期选择器中显示几天的约会,但这并没有多大帮助,因为日期选择器下拉菜单在选择后关闭。
我已经进行了很多谷歌搜索,但无法找到在 javafx datepicker 皮肤中显示多个选定日期的方法。
谁能给我一个解决方案,说明如何在日期选择器皮肤上添加几天,或者可能是一种解决方法或其他不是 javafx 的工具?
任何帮助将不胜感激。
在我已经拥有的代码下方。
这是日期选择器的工作代码:
private void datepickerSetDate() throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateInString = "2017-05-27";
Date date = formatter.parse(dateInString);
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd");
String dateInString2 = "2017-05-29";
Date date2 = formatter2.parse(dateInString2);
Instant instant = date.toInstant();
LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
Instant instant2 = date2.toInstant();
LocalDate localDate2 = instant2.atZone(ZoneId.systemDefault()).toLocalDate();
ObservableList<LocalDate> selectedDates = FXCollections.observableArrayList();
selectedDates.addAll(localDate , localDate2);
datePicker_1.setOnAction(event -> selectedDates.add(datePicker_1.getValue()));
datePicker_1.setDayCellFactory(new Callback<DatePicker, DateCell>() {
@Override
public DateCell call(DatePicker param) {
return 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: lightblue;" : "");
}
};
}
});
【问题讨论】:
标签: javafx datepicker