Module  javafx.controls

Class ChoiceBoxTreeCell<T>

  • 参数类型
    T - TreeView中包含的TreeItem的类型。
    All Implemented Interfaces:
    StyleableEventTargetSkinnable


    public class ChoiceBoxTreeCell<T>
    extends TreeCell<T>
    一个包含ListCell实现的类,在该单元格内绘制一个ChoiceBox节点。

    默认情况下, ChoiceBoxTreeCell在不被编辑时呈现为Label,在编辑模式时也作为ChoiceBox呈现。 默认情况下,ChoiceBox将拉伸填充整个树单元格。

    要创建一个ChoiceBoxTreeCell,有必要提供零个或多个项目,当ChoiceBox菜单显示时,该项目将显示给用户。 这些项目必须与TreeView TreeItems具有相同的类型,以便在选择时,它们将替换TreeItem.valueProperty()的现有值。

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

      • ChoiceBoxTreeCell

        public ChoiceBoxTreeCell​()
        创建一个带有空项目列表的默认ChoiceBoxTreeCell。
      • ChoiceBoxTreeCell

        @SafeVarargs
        public ChoiceBoxTreeCell​(T... items)
        创建默认的ChoiceBoxTreeCell实例,给定的项目用于在显示ChoiceBox时填充ChoiceBox
        参数
        items - 由用户选择时在ChoiceBox弹出菜单中显示的项目。
      • ChoiceBoxTreeCell

        @SafeVarargs
        public ChoiceBoxTreeCell​(StringConverter<T> converter,
                                 T... items)
        创建一个ChoiceBoxTreeCell实例,给定的项目用于在显示ChoiceBox时填充ChoiceBox ,而StringConverter用于将项目转换为用户可读的形式。
        参数
        converter - A Callback可以将T类型的项目转换为用户可读的字符串,以便可以在ChoiceBox弹出菜单中显示。
        items - 由用户选择时在ChoiceBox弹出菜单中显示的项目。
      • ChoiceBoxTreeCell

        public ChoiceBoxTreeCell​(ObservableList<T> items)
        创建默认的ChoiceBoxTreeCell实例,给定的项目用于在显示ChoiceBox时填充ChoiceBox
        参数
        items - 由用户选择时在ChoiceBox弹出菜单中显示的项目。
      • ChoiceBoxTreeCell

        public ChoiceBoxTreeCell​(StringConverter<T> converter,
                                 ObservableList<T> items)
        创建一个ChoiceBoxTreeCell实例,给定的项目用于填充ChoiceBox ,并显示StringConverter用于将项目转换为用户可读的形式。
        参数
        converter - A Callback可以将类型T的项目转换为用户可读的字符串,以便可以在ChoiceBox弹出菜单中显示。
        items - 由用户选择时在ChoiceBox弹出菜单中显示的项目。
    • 方法详细信息

      • forTreeView

        @SafeVarargs
        public static <T> Callback<TreeView<T>,TreeCell<T>> forTreeView​(T... items)
        创建一个ChoiceBox单元格工厂,用于TreeView控件。 默认情况下, ChoiceBoxCell在不被编辑时呈现为Label,在编辑模式时作为ChoiceBox呈现。 默认情况下,ChoiceBox将拉伸填充整个树单元格。
        参数类型
        T - TreeView中包含的元素的类型。
        参数
        items - 当显示ChoiceBox菜单时将显示给用户的零个或多个项目。 这些项目必须与TreeView <T>具有相同的类型,以便选择后,它们将替换TreeItem value属性中的现有值。
        结果
        一个Callback ,它将返回一个TreeCell,它能够处理TreeView中包含的元素的类型。
      • forTreeView

        public static <T> Callback<TreeView<T>,TreeCell<T>> forTreeView​(ObservableList<T> items)
        创建一个ChoiceBox单元格工厂,用于TreeView控件。 默认情况下, ChoiceBoxCell在不被编辑时呈现为Label,在编辑模式时作为ChoiceBox呈现。 默认情况下,ChoiceBox将扩展以填充整个树单元格,不包括分配给树单元格缩进和公开节点(即箭头)的空间。
        参数类型
        T - 包含在TreeView中的TreeItem元素的类型。
        参数
        items - 一个ObservableList包含零个或多个项目,当ChoiceBox菜单显示时将显示给用户。 这些项目必须与TreeView通用类型的类型相同,因此在选择后,它们将替换正在编辑的TreeItem中的现有值(如TreeView.editingItemProperty()中所述)。
        结果
        A Callback将返回能够处理TreeView中包含的元素类型的TreeCell。
      • forTreeView

        @SafeVarargs
        public static <T> Callback<TreeView<T>,TreeCell<T>> forTreeView​(StringConverter<T> converter,
                                                                        T... items)
        创建一个ChoiceBox单元格工厂用于TreeView控件。 默认情况下, ChoiceBoxCell在不被编辑时呈现为Label ,而在编辑模式下,作为ChoiceBox呈现。 默认情况下,ChoiceBox将拉伸填充整个树单元格。
        参数类型
        T - TreeView中包含的元素的类型。
        参数
        converter - A StringConverter将给定的项目(类型T)转换为字符串以显示给用户。
        items - 当显示ChoiceBox菜单时将显示给用户的零个或多个项目。 这些项目必须与TreeView <T>具有相同的类型,以便在选择时,它们将替换TreeItem value属性中的现有值。
        结果
        一个Callback将返回一个TreeCell,它能够处理TreeView中包含的元素类型。
      • forTreeView

        public static <T> Callback<TreeView<T>,TreeCell<T>> forTreeView​(StringConverter<T> converter,
                                                                        ObservableList<T> items)
        创建一个ChoiceBox单元格工厂,用于TreeView控件。 默认情况下, ChoiceBoxCell在不被编辑时被渲染为Label ,而在编辑模式下,作为ChoiceBox呈现。 默认情况下,ChoiceBox将拉伸填充整个树单元格。
        参数类型
        T - TreeView中包含的元素的类型。
        参数
        converter - A StringConverter将给定项目(类型T)转换为字符串以显示给用户。
        items - 一个ObservableList包含零个或多个项目,当ChoiceBox菜单显示时将显示给用户。 这些项目必须与TreeView通用类型的类型相同,以便在选择时,它们将替换正在编辑的TreeItem中的现有值(如TreeView.editingItemProperty()所述)
        结果
        一个Callback将返回一个TreeCell,它能够处理TreeView中包含的元素类型。
      • getItems

        public ObservableList<T> getItems​()
        返回要显示在ChoiceBox中的项目。
        结果
        要显示在ChoiceBox中的项目
      • startEdit

        public void startEdit​()
        调用此功能从非编辑状态转换到编辑状态,如果单元格是可编辑的。 如果这个单元格已经处于编辑状态,它将保留在它中。
        重写:
        startEditTreeCell<T>
      • cancelEdit

        public void cancelEdit​()
        调用此功能从编辑状态转换为非编辑状态,而不保存任何用户输入。
        重写:
        cancelEditTreeCell<T>
      • 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。 如果我们不这样做,几乎可以保证最终用户意外地看到细胞中的图形工件。
        参数
        item - 单元格的新项目。
        empty - whether or not this cell represents data from the list. If it is empty, then it does not represent any domain data, but is a cell being used to render an "empty" row.