Module  javafx.controls

Class CheckBoxTreeTableCell<S,T>

  • 参数类型
    S - TreeTableView通用类型的类型
    T - TreeTableColumn中包含的元素的类型。
    All Implemented Interfaces:
    StyleableEventTargetSkinnable


    public class CheckBoxTreeTableCell<S,T>
    extends TreeTableCell<S,T>
    一个包含一个TreeTableCell实现的类,在该单元格内绘制一个CheckBox节点,可选地带有一个标签来指示复选框代表什么。

    默认情况下,CheckBoxTreeTableCell使用以TreeTableColumn为中心的CheckBox进行渲染。 如果需要标签,则必须向CheckBoxTreeTableCell(Callback, StringConverter)构造函数提供非空StringConverter实例。

    要构造此类的实例,有必要提供一个Callback ,给定一个类型T的对象将返回一个ObservableProperty<Boolean> ,表示给定项是否被选择。 这个ObservableValue将双向绑定(这意味着单元格中的CheckBox将根据用户交互设置/取消设置此属性,如果外部改变,CheckBox将反映ObservableValue的状态)。

    请注意,CheckBoxTreeTableCell渲染CheckBox“live”,这意味着CheckBox始终是交互式的,可以由用户直接切换。 这意味着单元格无需进入其editing state (通常由用户双击单元格)。 这方面的一个副作用是,通常的编辑回调(如on edit commit )将被调用。 如果要通知更改,建议直接观察CheckBox操作的布尔属性。

    从以下版本开始:
    JavaFX 8.0
    • 构造方法详细信息

      • CheckBoxTreeTableCell

        public CheckBoxTreeTableCell​()
        创建一个默认的CheckBoxTreeTableCell。
      • CheckBoxTreeTableCell

        public CheckBoxTreeTableCell​(Callback<Integer,ObservableValue<Boolean>> getSelectedProperty,
                                     StringConverter<T> converter)
        用自定义字符串转换器创建一个CheckBoxTreeTableCell。
        参数
        getSelectedProperty - A Callback将从TreeTableColumn返回给定索引的ObservableValue
        converter - 给定一个类型为T的对象的StringConverter将返回一个可以用来直观地表示对象的String。
    • 方法详细信息

      • forTreeTableColumn

        public static <S> Callback<TreeTableColumn<S,Boolean>,TreeTableCell<S,Boolean>> forTreeTableColumn​(TreeTableColumn<S,Boolean> column)
        创建一个电池厂 ,用于TreeTableColumn电池厂 此方法要求TreeTableColumn的类型为Boolean

        当在TreeTableColumn中使用时,CheckBoxCell将以列为中心的CheckBox呈现。

        包含在列中每个单元格内的ObservableValue<Boolean>将双向绑定。 这意味着单元格中的复选框将基于用户交互设置/取消设置此属性,如果外部更改,则复选框将反映ObservableValue<Boolean>的状态。

        参数类型
        S - TreeTableView通用类型的类型
        参数
        column - 类型为Boolean的TreeTableColumn
        结果
        A Callback将返回一个能够处理TreeTableColumn中包含的元素类型的TreeTableCell
      • forTreeTableColumn

        public static <S,T> Callback<TreeTableColumn<S,T>,TreeTableCell<S,T>> forTreeTableColumn​(Callback<Integer,ObservableValue<Boolean>> getSelectedProperty)
        创建一个电池厂 ,用于TreeTableColumn电池厂 此方法要求TreeTableColumn的类型为ObservableValue<Boolean>

        当在TreeTableColumn中使用时,CheckBoxCell将以列为中心的CheckBox呈现。

        参数类型
        S - TreeTableView泛型类型的类型
        T - TreeTableColumn实例中包含的元素的类型。
        参数
        getSelectedProperty - 给定一个TreeTableColumn<S,T>类型的对象的回调TreeTableColumn<S,T>将返回一个ObservableValue<Boolean> ,表示给定的项目是否被选择。 这个ObservableValue<Boolean>将双向绑定(这意味着单元格中的复选框将基于用户交互设置/取消设置此属性,如果外部更改,则复选框将反映ObservableValue<Boolean>的状态)。
        结果
        A Callback将返回一个能够处理TreeTableColumn中包含的元素类型的TreeTableCell
      • forTreeTableColumn

        public static <S,T> Callback<TreeTableColumn<S,T>,TreeTableCell<S,T>> forTreeTableColumn​(Callback<Integer,ObservableValue<Boolean>> getSelectedProperty,
                                                                                                 boolean showLabel)
        创建一个电池厂 ,用于TreeTableColumn电池厂 此方法要求TreeTableColumn的类型为ObservableValue<Boolean>

        当在TreeTableColumn中使用时,CheckBoxCell将以列为中心的CheckBox呈现。

        参数类型
        S - TreeTableView泛型类型的类型
        T - TreeTableColumn实例中包含的元素的类型。
        参数
        getSelectedProperty - 给定一个TreeTableColumn<S,T>类型的对象的回调TreeTableColumn<S,T>将返回一个ObservableValue<Boolean> ,表示给定的项目是否被选择。 这个ObservableValue<Boolean>将双向绑定(这意味着单元格中的复选框将基于用户交互设置/取消设置此属性,如果外部更改,则复选框将反映ObservableValue<Boolean>的状态)。
        showLabel - 在某些情况下,可能希望在CheckBox旁边的TreeTableCell中显示一个标签。 默认情况下,不显示标签,但通过将其设置为true,单元格中的项目也将在其上调用toString()。 如果这不是期望的行为,请考虑使用forTreeTableColumn(javafx.util.Callback, javafx.util.StringConverter) ,这允许您提供指定给定行项目的标签的回调。
        结果
        A Callback将返回一个能够处理TreeTableColumn中包含的元素类型的TreeTableCell
      • forTreeTableColumn

        public static <S,T> Callback<TreeTableColumn<S,T>,TreeTableCell<S,T>> forTreeTableColumn​(Callback<Integer,ObservableValue<Boolean>> getSelectedProperty,
                                                                                                 StringConverter<T> converter)
        创建一个电池厂 ,用于TreeTableColumn电池厂 此方法要求TreeTableColumn的类型为ObservableValue<Boolean>

        当在TreeTableColumn中使用时,CheckBoxCell将以列为中心的CheckBox呈现。

        参数类型
        S - TreeTableView泛型类型的类型
        T - TreeTableColumn实例中包含的元素的类型。
        参数
        getSelectedProperty - 给予TreeTableColumn<S,T>类型的对象的回调将返回一个表示给定项目是否被选择的ObservableValue<Boolean> 这个ObservableValue<Boolean>将双向绑定(这意味着单元格中的复选框将基于用户交互设置/取消设置此属性,如果外部更改,则复选框将反映ObservableValue<Boolean>的状态)。
        converter - 给定类型为T的对象的StringConverter将返回一个可以用于可视化表示对象的字符串。 forTreeTableColumn(Callback, boolean) (当showLabel为true时)的默认实现是简单地在所有非空项目上调用.toString()(并且在给定项为null的情况下只返回一个空字符串)。
        结果
        A Callback将返回一个能够处理TreeTableColumn中包含的元素类型的TreeTableCell
      • updateItem

        public void updateItem​(T 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<T>
        参数
        item - 单元格的新项目。
        empty - 该单元格是否表示列表中的数据。 如果它是空的,那么它不表示任何域数据,而是用于呈现“空”行的单元格。