Module  javafx.controls

Class PropertyValueFactory<S,T>

  • 参数类型
    S - TableView.items列表中包含的类的类型。
    T - TableColumn单元格中包含的类的类型。
    All Implemented Interfaces:
    Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>


    public class PropertyValueFactory<S,T>
    extends Object
    implements Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>
    Callback界面的方便实现,专为TableColumn cell value factory使用而设计。 如何使用这个类的一个例子是:
       TableColumn<Person,String> firstNameCol = new TableColumn<Person,String>("First Name"); firstNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("firstName"));  

    在这个例子中, PersonTableView items列表的类型。 Person必须宣布为公开。 PropertyValueFactory使用构造函数参数"firstName"来假定Person具有公共方法firstNameProperty ,没有形式参数,返回类型为ObservableValue<String>

    如果存在这样的方法,那么它将被调用,另外假设返回一个Property<String>的实例。 返回值用于填充TableCell 此外, TableView增加观察者的返回值,使得烧制的任何变化将通过观察TableView ,导致细胞立即更新。

    如果不存在这样的方法,则PropertyValueFactory假设Person具有公共方法getFirstNameisFirstName ,没有形式参数,返回类型为String 如果存在这样的方法,那么它将被调用,它的返回值被包装在一个ReadOnlyObjectWrapper并返回到TableCell 在这种情况下, TableCell将无法观察到财产的变化,与上述第一种方法不同。

    作为参考(并且如表格cell value factory文档中所述),上述代码的长形式将是以下内容:

       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(); } }); }  

    将应用程序部署为模块

    如果引用的类在命名模块中,那么它必须反映可访问javafx.base模块。 如果模块opens将包含的包至少为javafx.base模块,则可以反射访问类。 否则, call(TableColumn.CellDataFeatures)方法将记录一个警告并返回null

    例如,如果Person类在foo.app模块中的com.foo包中,则module-info.java可能如下所示:

      module foo.app { opens com.foo to javafx.base; } 

    或者,如果模块exports无条件地包含包,则可以反射地访问类。

    从以下版本开始:
    JavaFX 2.0
    另请参见:
    TableColumnTableViewTableCellTreeItemPropertyValueFactoryMapValueFactory
    • 构造方法详细信息

      • PropertyValueFactory

        public PropertyValueFactory​(String property)
        创建一个默认的PropertyValueFactory,使用给定的属性名称反射地从给定的TableView行项中提取值。
        参数
        property - 试图在给定对象中反映提取相应值的属性名称。
    • 方法详细信息

      • call

        public ObservableValue<T> call​(TableColumn.CellDataFeatures<S,T> param)
        call方法在需要时被调用,并且被赋予类型为P的单个参数,并且要求返回类型为R的对象。
        Specified by:
        call在接口 Callback<S,T>
        参数
        param - 应该确定返回值的单个参数。
        结果
        可以基于所提供的参数值来确定类型R的对象。
      • getProperty

        public final String getProperty​()
        返回构造函数中提供的属性名称。
        结果
        构造函数中提供的属性名称