我对JavaFX库有一个特殊的问题,该问题可能会揭示我对JavaFX-Framework总体理解的缺陷。

我们假设存在一个名为Entity的实体类,该实体类具有一个名为BooleanPropertychecked。此外,让表格列如下:

TableColumn<Entity,Boolean> checkBoxColumn;


然后,单元格值工厂的设置器具有以下签名:

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动态检查单元格值工厂返回的引用是否实际上是对属性的引用,然后将此属性绑定到checkBox的选中属性。

最佳答案

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


那正是它的作用。没什么复杂的:仅使用简单的instanceof检查。如果您有足够的兴趣,则源代码为here(请参见updateItem(...)方法)。

关于java - CheckBoxTableCell如何传播回更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20563191/

10-10 14:57