Module  javafx.controls
软件包  javafx.scene.control

Class DateCell

  • All Implemented Interfaces:
    StyleableEventTargetSkinnable


    public class DateCell
    extends Cell<LocalDate>
    DateCell由DatePicker用于在日历月中呈现单个网格单元格。 通过提供dayCellFactory ,应用程序可以提供更新方法来更改每个单元格的属性,如文本,背景颜色等。
    从以下版本开始:
    JavaFX 8.0
    • 构造方法详细信息

      • DateCell

        public DateCell​()
    • 方法详细信息

      • updateItem

        public void updateItem​(LocalDate item,
                               boolean empty)
        updateItem方法不应该被开发人员调用,但它是开发人员覆盖的最佳方式,以允许它们自定义单元格的视觉效果。 为了弄清楚,开发人员不应该在他们的代码中调用这个方法(他们应该留给UI控件,比如ListView控件)来调用这个方法。 但是,使用updateItem方法的目的是使开发人员在指定自定义单元工厂时(再次像ListView cell factory ),可以覆盖updateItem方法以允许对单元格进行完全自定义。

        非常重要的是,Cell的子类会正确覆盖updateItem方法,因为这样做会导致诸如空白单元格或其中出现意外内容的单元格等问题。 以下是如何正确覆盖updateItem方法的示例:

          protected void updateItem(T item, boolean empty) {
             super.updateItem(item, empty);
        
             if (empty || item == null) {
                 setText(null);
                 setGraphic(null);
             } else {
                 setText(item.toString());
             }
         } 

        注意在这段代码示例中的两个重点:

        1. 我们称之为super.updateItem(T,boolean)方法。 如果没有这样做,项目和空属性设置不正确,您可能会遇到图形问题。
        2. 我们测试empty条件,如果为true,我们将文本和图形属性设置为null。 如果我们不这样做,几乎可以保证最终用户意外地看到细胞中的图形工件。
        重写:
        updateItemCell<LocalDate>
        参数
        item - 单元格的新项目。
        empty - 该单元格是否表示列表中的数据。 如果它是空的,那么它不表示任何域数据,而是用于呈现“空”行的单元格。
      • createDefaultSkin

        protected Skin<?> createDefaultSkin​()
        为此控件创建一个新的默认皮肤实例。 如果没有通过CSS -fx-skin提供皮肤或者在具有setSkin(...)的子类中显式设置,则调用此控件创建皮肤。
        重写:
        createDefaultSkinControl
        结果
        此控件的默认皮肤的新实例。 如果为null,则控件将没有皮肤,除非由css提供。