javafx treetableview单元格值未更新

时间:2014-05-08 14:42:12

标签: javafx refresh 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可以更新的技巧?

1 个答案:

答案 0 :(得分:3)

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

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

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

emailColumn.setCellValueFactory( param -> param.getValue().getValue().emailProperty());