2

更新数据模型 javafx treetableview 单元格值未更新后的事件。

我在这里使用示例代码@http: //docs.oracle.com/javase/8/javafx/user-interface-tutorial/tree-table-view.htm (示例15-2)

单击按钮时,我试图更新第一项:employees.get(0).setName("Test");

有什么技巧可以使用可以更新的 treetableview 吗?

4

1 回答 1

3

这个例子有点奇怪,它返回了一个ReadOnlyStringWrapper包装单元值工厂的属性值。因此,它不是将列中显示的值直接Employee绑定到类中的属性,而是将它们绑定到一个新的只读属性,该属性包装了updateItem(..)在单元格上调用时检索到的值。这意味着当基础数据更新时它不会更新,但只有updateItem(...)在单元格上调用该方法时才会更新。(我不知道他们为什么要这样做。)所以你应该发现,例如,如果你改变值,然后折叠根节点TreeTableView并再次展开它,你的新值会在展开根节点后显示(因为这会导致updateItem(...)调用单元格的方法)。

要在数据更改时更新单元格,请将单元格值直接绑定到模型 ( Employee) 类中定义的属性:

empColumn.setCellValueFactory( param -> param.getValue().getValue().nameProperty());

emailColumn.setCellValueFactory( param -> param.getValue().getValue().emailProperty());
于 2014-05-08T16:13:21.203 回答