从Eclipse帮助中:

setCellValueFactory

需要设置单元格值工厂,以指定如何填充单个TableColumn中的所有单元格。单元格值工厂是提供CellDataFeatures实例的Callback,并期望返回ObservableValue。将在内部观察返回的ObservableValue实例,以允许立即更新该值以反映在屏幕上。

CellDataFeatures

TableColumn中用作包装类的支持类,以提供特定Cell的所有必需信息。

PropertyValueFactory

创建一个默认的PropertyValueFactory,以使用给定的属性名称反射地从给定的TableView行项目中提取值。


用我的话解释:

myTableViewColumn.setCellValueFactory(new PropertyValueFactory<MyModelClass, String>("name"));

setCellValueFactory指定如何填充myTableViewColumn列中的所有单元格。此处使用的数据类型是一个属性。通过使用PropertyValueFactory,我们通过查找名为“名称”的属性(在MyModelClass private final SimpleStringProperty name = new SimpleStringProperty("");中声明)来获得指定的属性。

我了解setCellValueFactoryPropertyValueFactory的用法吗?

最佳答案

我不知道你是否理解它的用法。该描述似乎大部分是正确的,但是有些细节您没有正确:


Callback本身不提供值。 cellValueFactory是将Callback实例作为其方法的参数并返回CellDataFeaturesObservableValueObservableValue实例中存储的值用作itemTableCell
此外,该值仅传递给负责显示该值的TableCell。此单元格对新值的处理完全取决于其实现者。更改值时,更改可能会在屏幕上显示或不可见,并且不需要在屏幕上显示单元格(可以使用TableView的滚动条将其滚动到视图之外)。
PropertyValueFactory不查找该字段。它寻找用于检索nameProperty()ObservableValue方法。
如果没有这样的方法,它将寻找一个吸气方法:getName()isName()。在后一种情况下,使用ObservableValue实例包装由getter返回的值(;请注意,这使自动更新成为不可能)。

关于java - Java(fx)-TableView-我了解setCellValueFactory和PropertyValueFactory的用法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42509381/

10-11 22:53