更新数据模型 javafx treetableview 单元格值未更新后的事件。
我在这里使用示例代码@http: //docs.oracle.com/javase/8/javafx/user-interface-tutorial/tree-table-view.htm (示例15-2)
单击按钮时,我试图更新第一项:employees.get(0).setName("Test");
有什么技巧可以使用可以更新的 treetableview 吗?
更新数据模型 javafx treetableview 单元格值未更新后的事件。
我在这里使用示例代码@http: //docs.oracle.com/javase/8/javafx/user-interface-tutorial/tree-table-view.htm (示例15-2)
单击按钮时,我试图更新第一项:employees.get(0).setName("Test");
有什么技巧可以使用可以更新的 treetableview 吗?
这个例子有点奇怪,它返回了一个ReadOnlyStringWrapper
包装单元值工厂的属性值。因此,它不是将列中显示的值直接Employee
绑定到类中的属性,而是将它们绑定到一个新的只读属性,该属性包装了updateItem(..)
在单元格上调用时检索到的值。这意味着当基础数据更新时它不会更新,但只有updateItem(...)
在单元格上调用该方法时才会更新。(我不知道他们为什么要这样做。)所以你应该发现,例如,如果你改变值,然后折叠根节点TreeTableView
并再次展开它,你的新值会在展开根节点后显示(因为这会导致updateItem(...)
调用单元格的方法)。
要在数据更改时更新单元格,请将单元格值直接绑定到模型 ( Employee
) 类中定义的属性:
empColumn.setCellValueFactory( param -> param.getValue().getValue().nameProperty());
和
emailColumn.setCellValueFactory( param -> param.getValue().getValue().emailProperty());