应用"选择"后,DateCell不会更改样式

时间:2017-07-10 16:10:08

标签: java css javafx datepicker javafx-8

我有一个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并选择日期后,只显示一个单元格被选中。

DatePicker with one day selected

即使在控制台中打印出来的风格也很难选择"但是让我感到疑惑的是,真正选择的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显示为选中状态?

1 个答案:

答案 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");
        });
}