我有一个 JTable,我想用它来显示一些数据(每行中的一个String
和一个Boolean
)。数据由我自己的班级维护。有没有办法将数据模型绑定到 JTable,这样当我添加到模型时,JTable 会动态更新,当我从模型中删除某些内容时,行会从 JTable 中删除?
我以前使用过 Flex 和 Actionscript,而这在数据绑定中很容易做到,所以我只是想知道它是如何在 Java 中完成的。
谢谢。
我有一个 JTable,我想用它来显示一些数据(每行中的一个String
和一个Boolean
)。数据由我自己的班级维护。有没有办法将数据模型绑定到 JTable,这样当我添加到模型时,JTable 会动态更新,当我从模型中删除某些内容时,行会从 JTable 中删除?
我以前使用过 Flex 和 Actionscript,而这在数据绑定中很容易做到,所以我只是想知道它是如何在 Java 中完成的。
谢谢。
虽然对于简单的情况实现 TableModel 很容易,但您可能需要考虑一种真正的绑定方法(我最喜欢的是Glazed Lists - 观看 30 秒视频,了解这有多简单,您会被征服)。Beans Binding(现在Better Beans Binding)也有一个可能有用的可观察列表的实现(尽管我更喜欢 Glazed Lists 方法)
您将需要让您的数据集实现该TableModel
接口。如果你这样做,那么你可以将它应用到 JTable。如果您扩展AbstractTableModel
,您将继承一些事件触发方法,您的表将处理这些方法并更新视图。 请参阅本教程。请注意,默认实现JTable
将为您呈现数据,如果找到布尔值,它将显示为复选框。
您可能会发现Java JTable 教程和JTable API 文档都有助于理解 JTable 的工作原理,但除此之外,这里有一个快速概述。
JTable 的前提是它与实现TableModel
接口的对象配对,默认情况下是DefaultTableModel
. 表模型对象由一个列列表组成,每个列都有自己的数据类型(在您的情况下),String
以及Boolean
一个包含表实际数据的行列表。
每当JTable被swing绘图代码绘制时,它就会重复调用该方法:
public Object getValueAt(int row, int col)
因此,当您将数据添加到表模型时,它始终会在下一次屏幕刷新(动态)时按照您的预期呈现。
那么,您真正需要担心的唯一一件事就是将数据从您的对象中获取到表模型中并再次返回。除此之外,JTable 负责所有繁重的工作。