作为一名Swing程序员,我不敢相信这很难,但显然是这样 .
我有一个javafx TableView,我想更改模型的一个值并正确更新屏幕 .
出于多种原因,我不想使用SimpleStringProperty及其同类产品 . 一个是我想使用POJO . 另一个是我的数据元素不是字符串!! (它们都不是像Integers这样的简单数据类型) . 所以使用这些是不可能的 .
我也不想知道隐藏和取消隐藏列的任何黑客以及任何类似的废话 . 我想知道正确的方式(™),我会留下其他人的黑客 .
在Swing中实现它的方法当然是微不足道的 . 你可以调用model.fireTableRowsUpdated(index,index);
1 回答
我感觉到你了 . 表是应用程序中最常见的事情之一,它在JavaFX中实现的方式最令人尴尬(当您更改单元格时丢失数据的焦点错误仍未解决)并且在现实世界环境中绝对无法使用 . 难怪他们称之为TableVIEW,因为你几乎无法做任何不同的事情 .
我尝试实现一个简单的复制/粘贴功能,您可以将一次单元格的内容复制到另一个单元格 . 这是不容易的 . 但是,我以一种获取单元格属性并调用set方法的方式解决了它 .
摘抄:
您可以从this gist获取完整代码 . 它可能会让您了解如何解决此问题 .
关于POJO:您必须使用属性 . 关于其他类型,请使用正确的类型,DoubleProperty,ObjectProperty等 .
并且它是可观察的,一旦您更改数据,tableview将更新 .