1

我使用 JTable 来显示来自流数据源的数据。

每个数据点都表示为 X 类型的对象,它有一个感兴趣的字段,我们称之为 valueField。我对 TableModel 接口的实现有一个对象 X 的 HashMap,它以 X.getId() 为键。

GUI 的用户可以使用设置为相关列中每个单元格的自定义编辑器的 JSpinner 来更改值。

但是,该值还取决于其他行中 X.valueField 的值。

例如,我的表代表 3 个对象 X1、X2 和 X3。他们的关系是:

X1.valueField = X2.valueField + X3.valueField

如果用户更改 X1,则 X2 和 X3 中的一个保持不变(取决于业务逻辑),另一个值会更改以保持关系一致。类似地,用户也可以改变X2或X3。

我应该在我的 TableModel 实现中封装关系,还是应该扩展我的自定义表编辑器以考虑值可以更改的方式?

我认为这两种方法都行得通,但我不确定哪一种是正确的。Sun 和其他论坛的文档建议扩展自定义编辑器以控制字段的值,但它没有考虑该值与底层数据模型的其他成员的关系。

任何想法都非常感谢。

00rush

4

1 回答 1

2

我建议,如果用户执行的 mod 是永久性的,即一旦制作了 mod,则更新支持数据 - 然后让表模型维护修改后的数据是正确的。另一方面,如果存在编辑模式,用户可以在其中处理数据并在完成后提交,我建议编辑器维护 mod 直到用户触发提交过程。

于 2010-02-17T08:51:58.770 回答