应用“选定”样式后,DateCell 未更改

问题描述 投票:0回答:1

我有一个 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 有 2 个“选定”样式。 这是控制台输出(部分):

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

那么为什么只有一个单元格显示为选中状态?

java css javafx datepicker javafx-8
1个回答
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");
        });
}
© www.soinside.com 2019 - 2024. All rights reserved.