我对JavaFX库有一个特殊的问题,可能会揭示我对JavaFX-Framework的理解中的一个缺陷。
我们假设有一个名为Entity
的实体类,其BooleanProperty
名为checked
。此外,让表格列如下:
TableColumn<Entity,Boolean> checkBoxColumn;
然后,单元格值工厂的setter具有以下签名:
setCellValueFactory(Callback<TableColumn.CellDataFeatures<Entity,Boolean>,ObservableValue<Boolean>> value)
以下代码应足以启用具有绑定到相应Entity-objects的checked
属性的复选框的列:
setCellValueFactory(new PropertyValueFactory<Entity, Boolean>("checked"));
checkBoxColumn.setCellFactory(CheckBoxTableCell.forTableColumn(checkBoxColumn));
我的问题最简单的形式:考虑到单元格值工厂返回CheckBoxTableCell
而不是ObservableValue<Boolean>
这一事实,BooleanProperty
如何设置支持属性的值? }?
我能想象如何完成这一操作的唯一方法是CheckBoxTableCell
动态检查单元格值工厂返回的引用是否实际上是对属性的引用,然后将此属性绑定到checked属性checkBox。
答案 0 :(得分:1)
我能想象如何做到这一点的唯一方法是 CheckBoxTableCell动态检查是否返回引用 单元格值工厂实际上是对属性的引用然后 将此属性绑定到checkBox的checked属性。
这正是它的作用。没有什么复杂的:只需使用简单的instanceof
检查。如果您有足够的兴趣,请查看源代码here(查看updateItem(...)方法)。