CheckBoxTableCell如何传播变回?

时间:2013-12-13 09:36:57

标签: java javafx-2

我对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。

1 个答案:

答案 0 :(得分:1)

  

我能想象如何做到这一点的唯一方法是   CheckBoxTableCell动态检查是否返回引用   单元格值工厂实际上是对属性的引用然后   将此属性绑定到checkBox的checked属性。

这正是它的作用。没有什么复杂的:只需使用简单的instanceof检查。如果您有足够的兴趣,请查看源代码here(查看updateItem(...)方法)。