1

我正在使用 MVC 架构在 Swing 中创建一个应用程序。但是我对在 MVC 架构中使用 JTable 组件有些担心。关键是,我在一个表格中有三列,其单元格包含常量值​​。此外,可以通过单击按钮添加其他列,另一个按钮用于计算常数值到那些新创建的单元格中。

所以,既然我现在有了三列的常量值,这意味着需要将这些值初始化到 JTable 中,这听起来像是我需要在我创建了 JTable 组件和其他组件的 View 类中使这些常量,这是一个坏主意,因为我还需要将这些常量值用于 Model 类。我的替代方法是使用这些常量创建接口。

我正在观看其他一些 MVC 项目的简单示例,但我还没有看到任何人在视图类中实现或创建此常量。所以我想知道,我是否应该在模型中创建一个 MyTableModel 类,它扩展 DefaultTableModel 或类似的东西,但是如果我决定在视图类中使用模型类,我就违反了规则“它不知道视图存在”?

是否有人已经使用 MVC 模式和 JTable 组件制作了类似的项目,或者是否有人可以分解为概念,例如:“我应该更关注什么”、“我可以在哪里创建以及在哪里不可以创建类”?

有没有人使用 Skype 或类似的交流方式,我并不是真的很无聊,只是想让有人问一些快速而简短的问题。

4

1 回答 1

1

如果您研究 JTable 的工作原理(当然,如果正确理解您的问题),它实际上非常简单。

要在不同的表格单元格中显示实际值,您必须指定一个自定义 CellRenderer,该单元格在每次显示/更新(重新绘制)单元格时根据模型中的值创建/更新 Swing 视图组件。所以表本身不会在任何地方保留/存储真实值 - 它只是使用表模型提供的值更新单元格(重新绘制它)。每次对单元格进行任何更改时都会执行此类更新:从内部 - 模型值更改,或从外部 - 表组件调整大小/移动,列调整大小/移动等

因此,您只需将值存储在表模型中(甚至在您自己的全局模型中,并将表模型简单地用作表视图和模型之间的桥梁)。

您可以以任何您喜欢的方式从表模型中提供值 - 常量值、计算值、缓存值、远程加载的值 - 无论您想要什么。这不会影响表格视图(除非您创建一些异步值加载或类似的东西不适合默认的 Swing 组件模型)。

于 2013-08-05T13:35:53.843 回答