我对JavaFX库有一个特殊的问题,该问题可能会揭示我对JavaFX-Framework总体理解的缺陷。
我们假设存在一个名为Entity
的实体类,该实体类具有一个名为BooleanProperty
的checked
。此外,让表格列如下:
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/