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