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

Class TreeTableColumn<S,T>

  • 参数类型
    S - TableView通用类型的类型(即S == TableView <S>)
    T - 此TableColumn中所有单元格中的内容类型。
    All Implemented Interfaces:
    StyleableEventTarget


    public class TreeTableColumn<S,T>
    extends TableColumnBase<TreeItem<S>,T>
    implements EventTarget
    A TreeTableView由多个TreeTableColumn实例组成。 TreeTableView中的每个TreeTableColumn负责显示(和编辑)该列的内容。 除了负责显示和编辑单个列的数据之外,TreeTableColumn还包含必要的属性: 创建TreeTableColumn实例时,可能要设置的两个最重要的属性是列text (列标题区域中显示的内容)和列cell value factory (用于填充列中的单个单元格)的列。 这可以使用以下代码中的一些变体来实现:
       firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the TreeItem<Person> instance for a particular TreeTableView row, // p.getValue().getValue() returns the Person instance inside the TreeItem<Person> return p.getValue().getValue().firstNameProperty(); } }); } 
    此方法假定从p.getValue().getValue()返回的对象具有可以简单地返回的JavaFX ObservableValue 这样做的好处是,TableView将在内部创建绑定,以确保返回的ObservableValue更改时,单元格内容将被自动刷新。

    在TableColumn必须与在JavaFX之前创建的类进行交互的情况下,或通常不希望为属性使用JavaFX API的情况下,可以将返回的值包装在一个ReadOnlyObjectWrapper实例中。 例如:

       firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the TreeItem<Person> instance for a particular TreeTableView row, // p.getValue().getValue() returns the Person instance inside the TreeItem<Person> return new ReadOnlyObjectWrapper(p.getValue().getValue().getFirstName()); } }); } 
    希望随着时间的推移,开发商可以开发和提供便利的电池价值工厂。 从JavaFX 2.0版本开始,有一个这样的便利类: TreeItemPropertyValueFactory 这个类不需要编写上面的代码,而是依靠反射来从String中查找给定的属性。 有关如何使用TableColumn的更多信息,请参阅TreeItemPropertyValueFactory类文档。 最后,有关如何使用TableColumn的更多细节,还有TableView类文档中的进一步文档。
    从以下版本开始:
    JavaFX 8.0
    另请参见:
    TableViewTableCellTablePositionTreeItemPropertyValueFactory
    • 字段详细信息

      • DEFAULT_CELL_FACTORY

        public static final Callback<TreeTableColumn<?,?>,TreeTableCell<?,?>> DEFAULT_CELL_FACTORY
        如果在TreeTableColumn实例上未指定cellFactory,则默认情况下将使用该实例。 目前,如果item属于节点,它将简单地将TableCell项目属性提交270702554144952属性中,或者如果它不为空,则调用toString() ,将生成的字符串设置在text属性中。
    • 构造方法详细信息

      • TreeTableColumn

        public TreeTableColumn​()
        使用默认单元格工厂,比较器和onEditCommit实现创建默认的TreeTableColumn。
      • TreeTableColumn

        public TreeTableColumn​(String text)
        创建一个TreeTableColumn,文本设置为提供的字符串,默认单元格工厂,比较器和onEditCommit实现。
        参数
        text - 当TreeTableColumn放置在TreeTableView中时显示的字符串。
    • 方法详细信息

      • editAnyEvent

        public static <S,T> EventType<TreeTableColumn.CellEditEvent<S,T>> editAnyEvent​()
        任何TreeTableColumn编辑事件的父事件。
        参数类型
        S - TreeTableView泛型类型的类型
        T - 此TreeTableColumn中所有单元格中的内容类型
        结果
        编辑事件
      • editCancelEvent

        public static <S,T> EventType<TreeTableColumn.CellEditEvent<S,T>> editCancelEvent​()
        表示编辑已被取消,这意味着不应对后备数据源进行任何更改。
        参数类型
        S - TreeTableView泛型类型的类型
        T - 此TreeTableColumn中所有单元格中的内容类型
        结果
        编辑取消事件
      • editCommitEvent

        public static <S,T> EventType<TreeTableColumn.CellEditEvent<S,T>> editCommitEvent​()
        表示编辑已由用户提交,这意味着应对后备数据源进行更改以反映新数据。
        参数类型
        S - TreeTableView通用类型的类型
        T - 此TreeTableColumn中所有单元格中的内容类型
        结果
        编辑提交事件
      • getTreeTableView

        public final TreeTableView<S> getTreeTableView​()
        获取属性treeTableView的值。
        Property description:
        TreeTableColumn属于的TreeTableView。
      • setCellValueFactory

        public final void setCellValueFactory​(Callback<TreeTableColumn.CellDataFeatures<S,T>,ObservableValue<T>> value)
        设置属性cellValueFactory的值。
        Property description:
        单元格值工厂需要设置为指定如何填充单个TreeTableColumn中的所有单元格。 一个单元格值工厂是一个Callback ,它提供了一个TreeTableColumn.CellDataFeatures实例,并期望返回一个ObservableValue 返回的ObservableValue实例将在内部进行观察,以允许更新值立即反映在屏幕上。

        如何设置单元格值工厂的一个例子是:

           firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the TreeItem<Person> instance for a particular TreeTableView row, // p.getValue().getValue() returns the Person instance inside the TreeItem<Person> return p.getValue().getValue().firstNameProperty(); } }); } 
        一个常见的方法是使用Java bean中的单个值来填充TreeTableColumn中的单元格。 为了支持这种常见的情况,有TreeItemPropertyValueFactory类。 有关如何使用该类的更多信息,请参阅此类,但简要说明如何使用TreeItemPropertyValueFactory类简化上述用例:
           firstNameCol.setCellValueFactory(new TreeItemPropertyValueFactory<Person,String>("firstName"));  
      • getCellValueFactory

        public final Callback<TreeTableColumn.CellDataFeatures<S,T>,ObservableValue<T>> getCellValueFactory​()
        获取属性cellValueFactory的值。
        Property description:
        单元格值工厂需要设置为指定如何填充单个TreeTableColumn中的所有单元格。 一个单元格值工厂是一个Callback ,它提供了一个TreeTableColumn.CellDataFeatures实例,并期望返回一个ObservableValue 返回的ObservableValue实例将在内部进行观察,以允许更新值立即反映在屏幕上。

        如何设置单元格值工厂的一个例子是:

           firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the TreeItem<Person> instance for a particular TreeTableView row, // p.getValue().getValue() returns the Person instance inside the TreeItem<Person> return p.getValue().getValue().firstNameProperty(); } }); } 
        一个常见的方法是使用Java bean中的单个值来填充TreeTableColumn中的单元格。 为了支持这种常见的情况,有TreeItemPropertyValueFactory类。 有关如何使用该类的更多信息,请参阅此类,但简要说明如何使用TreeItemPropertyValueFactory类简化上述用例:
           firstNameCol.setCellValueFactory(new TreeItemPropertyValueFactory<Person,String>("firstName"));  
      • cellValueFactoryProperty

        public final ObjectProperty<Callback<TreeTableColumn.CellDataFeatures<S,T>,ObservableValue<T>>> cellValueFactoryProperty​()
        单元格值工厂需要设置为指定如何填充单个TreeTableColumn中的所有单元格。 一个单元格值工厂是一个Callback ,它提供了一个TreeTableColumn.CellDataFeatures实例,并期望返回一个ObservableValue 返回的ObservableValue实例将在内部进行观察,以允许更新值立即反映在屏幕上。

        如何设置单元格值工厂的一个例子是:

           firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the TreeItem<Person> instance for a particular TreeTableView row, // p.getValue().getValue() returns the Person instance inside the TreeItem<Person> return p.getValue().getValue().firstNameProperty(); } }); } 
        一个常见的方法是使用Java bean中的单个值来填充TreeTableColumn中的单元格。 为了支持这种常见的情况,有TreeItemPropertyValueFactory类。 有关如何使用该类的更多信息,请参阅此类,但简要说明如何使用TreeItemPropertyValueFactory类简化上述用例:
           firstNameCol.setCellValueFactory(new TreeItemPropertyValueFactory<Person,String>("firstName"));  
        另请参见:
        getCellValueFactory()setCellValueFactory(Callback)
      • setCellFactory

        public final void setCellFactory​(Callback<TreeTableColumn<S,T>,TreeTableCell<S,T>> value)
        设置属性cellFactory的值。
        Property description:
        该列中所有单元格的单元格工厂。 单元工厂负责渲染单个TreeTableColumn中每个TreeTableCell中包含的数据。

        默认情况下,TreeTableColumn使用default cell factory ,但是可以用自定义实现替换,例如以不同的方式显示数据或支持编辑。 有很多关于在其他地方创建自定义单元格工厂的文档(例如,参见CellTreeTableView )。

        最后, javafx.scene.control.cell包中有许多预建的电池厂可用。

      • getCellFactory

        public final Callback<TreeTableColumn<S,T>,TreeTableCell<S,T>> getCellFactory​()
        获取属性cellFactory的值。
        Property description:
        该列中所有单元格的单元格工厂。 单元工厂负责渲染单个TreeTableColumn中每个TreeTableCell中包含的数据。

        默认情况下,TreeTableColumn使用default cell factory ,但是可以用自定义实现替换,例如以不同的方式显示数据或支持编辑。 有很多关于在其他地方创建自定义单元格工厂的文档(例如,参见CellTreeTableView )。

        最后, javafx.scene.control.cell包中有许多预建的电池厂可用。

      • setSortType

        public final void setSortType​(TreeTableColumn.SortType value)
        设置属性sortType的值。
        Property description:
        用于说明此列是否为排序顺序的一部分(详见TreeTableView.getSortOrder() ),应按升序或降序排序。 只需切换此属性将导致TreeTableView中的排序顺序更改,假设此列位于sortOrder ObservableList中。
      • getSortType

        public final TreeTableColumn.SortType getSortType​()
        获取属性sortType的值。
        Property description:
        用于说明此列是否为排序顺序的一部分(详见TreeTableView.getSortOrder() ),应按升序或降序进行排序。 只需切换此属性将导致TreeTableView中的排序顺序更改,假设此列位于sortOrder ObservableList中。
      • setOnEditStart

        public final void setOnEditStart​(EventHandler<TreeTableColumn.CellEditEvent<S,T>> value)
        设置属性onEditStart的值。
        Property description:
        当用户成功启动编辑时,会触发此事件处理程序。
      • getOnEditStart

        public final EventHandler<TreeTableColumn.CellEditEvent<S,T>> getOnEditStart​()
        获取onEditStart上的属性的值。
        Property description:
        当用户成功启动编辑时,会触发此事件处理程序。
      • setOnEditCommit

        public final void setOnEditCommit​(EventHandler<TreeTableColumn.CellEditEvent<S,T>> value)
        设置属性onEditCommit的值。
        Property description:
        当用户成功提交编辑时,会触发此事件处理程序。
      • getOnEditCommit

        public final EventHandler<TreeTableColumn.CellEditEvent<S,T>> getOnEditCommit​()
        获取属性onEditCommit的值。
        Property description:
        当用户成功提交编辑时,会触发此事件处理程序。
      • setOnEditCancel

        public final void setOnEditCancel​(EventHandler<TreeTableColumn.CellEditEvent<S,T>> value)
        设置属性onEditCancel的值。
        Property description:
        当用户取消编辑单元格时,将触发此事件处理程序。
      • getOnEditCancel

        public final EventHandler<TreeTableColumn.CellEditEvent<S,T>> getOnEditCancel​()
        获取属性onEditCancel的值。
        Property description:
        当用户取消编辑单元格时,将触发此事件处理程序。
      • getColumns

        public final ObservableList<TreeTableColumn<S,?>> getColumns​()
        这样可以支持嵌套列,这对于将相关数据组合在一起是有用的。 例如,我们可能有一个“名称”列,其中包含“First”和“Last”名称的两个嵌套列。

        这对于这样没有影响 - 所有列索引仅指向叶子列,并且不可能使用父列进行排序,只能使用叶列。 换句话说,这纯粹是一个视觉特征。

        Specified by:
        getColumnsTableColumnBase<TreeItem<S>,T>
        结果
        一个包含TableColumnBase实例(或子类)的ObservableList,它是此TableColumnBase的子项。 如果这些孩子的TableColumnBase实例设置为可见,它们将显示在此表列下方。
      • getCellObservableValue

        public final ObservableValue<T> getCellObservableValue​(int index)
        尝试返回给定索引(类型为S)中的项目的ObservableValue <T>。 换句话说,该方法期望接收大于或等于零且小于底层数据模型大小的整数值。 如果索引有效,此方法将返回此特定列的ObservableValue <T>。

        这可以通过调用cell value factory来实现,并返回传递CellDataFeatures任何返回CellDataFeatures (例如,参见例如,属于TableColumn的CellDataFeatures类以及TreeTableColumn的更多信息)。

        Specified by:
        getCellObservableValueTableColumnBase<TreeItem<S>,T>
        参数
        index - 寻找ObservableValue <T>的项目(S型)的索引。
        结果
        此特定表列的ObservableValue <T>。
      • getCellObservableValue

        public final ObservableValue<T> getCellObservableValue​(TreeItem<S> item)
        尝试返回给定项目(其类型为S)的ObservableValue <T>。 换句话说,该方法期望从表中的整个“行”的底层数据模型接收一个对象,并且必须返回该特定列中的值的ObservableValue <T>。

        这可以通过调用cell value factory来实现,并返回任何通过CellDataFeatures返回的CellDataFeatures (例如,参见例如,属于TableColumn的CellDataFeatures类和TreeTableColumn的更多信息)。

        Specified by:
        getCellObservableValueTableColumnBase<TreeItem<S>,T>
        参数
        item - 寻求ObservableValue <T>的项目(S型)。
        结果
        此特定表列的ObservableValue <T>。
      • getTypeSelector

        public String getTypeSelector​()
        这种Styleable的类型用于选择器匹配。 这类似于HTML中的“元素”。 CSS Type Selector )。
        Specified by:
        getTypeSelector在接口 Styleable
        结果
        “TreeTableColumn”
      • getStyleableParent

        public Styleable getStyleableParent​()
        返回此Styleable的父项,如果没有父项则返回null。
        Specified by:
        getStyleableParent接口 Styleable
        结果
        getTreeTableView()
      • getStyleableNode

        public Node getStyleableNode​()
        返回表示此Styleable对象的Node。 在Styleable本身不是Node的情况下,应该覆盖此方法,以便它可以可选地返回其本身的相关根节点表示。 默认情况下,此方法返回null,这可能意味着Styleable本身是一个Node,如果不是这种情况,则Styleable在请求时没有可用的节点表示。
        Specified by:
        getStyleableNode在接口 Styleable
        结果
        表示此Styleable对象的节点