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

Class TableColumn<S,T>

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


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

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

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

      • DEFAULT_CELL_FACTORY

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

      • TableColumn

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

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

      • editAnyEvent

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

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

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

        public final TableView<S> getTableView​()
        获取属性tableView的值。
        Property description:
        TableView这个TableColumn属于。
      • setCellValueFactory

        public final void setCellValueFactory​(Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>> value)
        设置属性cellValueFactory的值。
        Property description:
        单元格值工厂需要设置为指定如何填充单个TableColumn中的所有单元格。 一个单元格值工厂是一个Callback ,它提供了一个TableColumn.CellDataFeatures实例,并期望返回一个ObservableValue 将在内部观察返回的ObservableValue实例,以便立即更新要在屏幕上反映的值。 如何设置单元格值工厂的一个例子是:
           lastNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the Person instance for a particular TableView row return p.getValue().lastNameProperty(); } }); }  
        一个常见的方法是使用Java bean中的单个值来填充TableColumn中的单元格。 为了支持这种常见的情况,有PropertyValueFactory类。 有关如何使用它的更多信息,请参阅此类,但简要的说明如何使用PropertyValueFactory类简化上述用例:
           lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));  
      • getCellValueFactory

        public final Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>> getCellValueFactory​()
        获取属性cellValueFactory的值。
        Property description:
        单元格值工厂需要设置为指定如何填充单个TableColumn中的所有单元格。 一个单元格值工厂是一个Callback ,它提供了一个TableColumn.CellDataFeatures实例,并期望返回一个ObservableValue 将在内部观察返回的ObservableValue实例,以便立即更新要在屏幕上反映的值。 如何设置单元格值工厂的一个例子是:
           lastNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the Person instance for a particular TableView row return p.getValue().lastNameProperty(); } }); }  
        一个常见的方法是使用Java bean中的单个值来填充TableColumn中的单元格。 为了支持这种常见的情况,有PropertyValueFactory类。 有关如何使用它的更多信息,请参阅此类,但简要的说明如何使用PropertyValueFactory类简化上述用例:
           lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));  
      • cellValueFactoryProperty

        public final ObjectProperty<Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>> cellValueFactoryProperty​()
        单元格值工厂需要设置为指定如何填充单个TableColumn中的所有单元格。 一个单元格值工厂是一个Callback ,它提供了一个TableColumn.CellDataFeatures实例,并期望返回一个ObservableValue 将在内部观察返回的ObservableValue实例,以便立即更新要在屏幕上反映的值。 如何设置单元格值工厂的一个例子是:
           lastNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the Person instance for a particular TableView row return p.getValue().lastNameProperty(); } }); }  
        一个常见的方法是使用Java bean中的单个值来填充TableColumn中的单元格。 为了支持这种常见的情况,有PropertyValueFactory类。 有关如何使用它的更多信息,请参阅此类,但简要的说明如何使用PropertyValueFactory类简化上述用例:
           lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));  
        另请参见:
        getCellValueFactory()setCellValueFactory(Callback)
      • setCellFactory

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

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

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

      • getCellFactory

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

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

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

      • setSortType

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

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

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

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

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

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

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

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

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

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

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

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

        这可以通过调用cell value factory来实现,当通过一个CellDataFeatures (参见例如CellDataFeatures类属于TableColumnTreeTableColumn的更多信息)时返回它。

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

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

        这可以通过调用cell value factory实现,并返回通过CellDataFeatures时返回的任何内容(例如,有关详细信息,请参阅例如,属于TableColumnTreeTableColumn的CellDataFeatures类)。

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

        public String getTypeSelector​()
        这种Styleable的类型用于选择器匹配。 这类似于HTML中的“元素”。 CSS Type Selector )。
        Specified by:
        getTypeSelector在接口 Styleable
        结果
        “TableColumn的”
        从以下版本开始:
        JavaFX 8.0
      • getStyleableParent

        public Styleable getStyleableParent​()
        返回此Styleable的父项,如果没有父项则返回null。
        Specified by:
        getStyleableParent在接口 Styleable
        结果
        getTableView()
        从以下版本开始:
        JavaFX 8.0
      • getCssMetaData

        public List<CssMetaData<? extends Styleable,?>> getCssMetaData​()
        这个样式的CssMetaData。 这可以作为不可修改的列表返回。
        Specified by:
        getCssMetaData在接口 Styleable
        结果
        CssMetaData
        从以下版本开始:
        JavaFX 8.0
      • getClassCssMetaData

        public static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData​()
        结果
        与此类相关联的CssMetaData可能包括其类的CssMetaData。
        从以下版本开始:
        JavaFX 8.0
      • getStyleableNode

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