从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("");
中声明)来获得指定的属性。
我了解setCellValueFactory
和PropertyValueFactory
的用法吗?
最佳答案
我不知道你是否理解它的用法。该描述似乎大部分是正确的,但是有些细节您没有正确:Callback
本身不提供值。 cellValueFactory
是将Callback
实例作为其方法的参数并返回CellDataFeatures
的ObservableValue
; ObservableValue
实例中存储的值用作item
的TableCell
。
此外,该值仅传递给负责显示该值的TableCell
。此单元格对新值的处理完全取决于其实现者。更改值时,更改可能会在屏幕上显示或不可见,并且不需要在屏幕上显示单元格(可以使用TableView
的滚动条将其滚动到视图之外)。PropertyValueFactory
不查找该字段。它寻找用于检索nameProperty()
的ObservableValue
方法。
如果没有这样的方法,它将寻找一个吸气方法:getName()
或isName()
。在后一种情况下,使用ObservableValue
实例包装由getter返回的值(;请注意,这使自动更新成为不可能)。
关于java - Java(fx)-TableView-我了解setCellValueFactory和PropertyValueFactory的用法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42509381/