我有一个DatePicker并添加此监听器。
datePicker.showingProperty().addListener((observable, oldValue, showing) -> {
if(showing) {
//Get the content
DatePickerContent content = (DatePickerContent)((DatePickerSkin)datePicker.getSkin()).getPopupContent();
content.lookupAll(".day-cell").forEach(cell -> {
cell.getStyleClass().add("selected");
System.out.println(cell.getStyleClass() + " Day: " + ((DateCell) cell).getItem());
});
}
});
但在显示DatePicker并选择日期后,只显示一个单元格被选中。
即使在控制台中打印出来的风格也很难选择"但是让我感到疑惑的是,真正选择的Cell已经选择了#34;选择"样式。 这是控制台输出(部分):
cell date-cell day-cell selected Day: 2017-07-11
cell date-cell day-cell selected Day: 2017-07-12
cell date-cell day-cell selected selected Day: 2017-07-13
cell date-cell day-cell selected Day: 2017-07-14
cell date-cell day-cell selected Day: 2017-07-15
那么为什么只有一个Cell显示为选中状态?
答案 0 :(得分:0)
不要向属性添加侦听器,只需设置datePicker.onShown
。
//Get the content
datePicker.onShown(e -> {
DatePickerContent content = (DatePickerContent)((DatePickerSkin)datePicker.getSkin()).getPopupContent();
content.lookupAll(".day-cell").forEach(cell -> {
cell.getStyleClass().add("selected");
});
}