Java Swing项目-JTable&;MVC

Java Swing项目-JTable&;MVC,java,swing,model-view-controller,jtable,Java,Swing,Model View Controller,Jtable,我正在使用MVC架构在Swing中创建一个应用程序。但是我对在MVC架构中使用JTable组件有一些担心。关键是,我在一个表中有三列,它们的单元格包含常量值​​. 此外,还可以通过单击按钮添加其他列,以及用于将常量值计算到新创建的单元格中的另一个按钮 既然我现在有了三列常量值​​, 这意味着这些值需要初始化为JTable,这听起来像是我需要在视图类中设置这些常量,在视图类中我已经创建了一个JTable组件和其他组件,这是一个坏主意,因为这些常量值我也需要用于模型类。我的替代方法是使用这些常量创建

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

既然我现在有了三列常量值​​, 这意味着这些值需要初始化为JTable,这听起来像是我需要在视图类中设置这些常量,在视图类中我已经创建了一个JTable组件和其他组件,这是一个坏主意,因为这些常量值我也需要用于模型类。我的替代方法是使用这些常量创建接口

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

已经有人做了吗​​使用MVC模式和JTable组件的类似项目,或者如果有人可以分解成概念,比如:“我应该注意什么”,“我可以在哪里创建类,哪里不创建类”


有人使用Skype或类似的交流方式吗?我不是说无聊,只是想有人问一些简短的问题。

如果你了解JTable是如何工作的,这其实很简单(当然,如果你正确理解了你的问题)

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

所以您只需要将值存储在表模型中(或者甚至存储在您自己的全局模型中,并使用表模型作为表视图和模型之间的桥梁)


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

如果您了解JTable的工作原理,这实际上非常简单(当然,如果您正确理解了问题的话)

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

所以您只需要将值存储在表模型中(或者甚至存储在您自己的全局模型中,并使用表模型作为表视图和模型之间的桥梁)


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

是否有人使用Skype或类似的通信形式?
-您可以尝试使用聊天室查看这篇关于如何组合Swing GUI的文章。这是关于一个数独解算器的,但是将任何Swing GUI放在一起的步骤都是一样的;(视图)呈现(并可选地编辑)模型中的值。因此,如果我创建了一个界面,那就没问题了?
有人使用Skype或类似的通信形式吗
-您可以尝试使用聊天室查看这篇关于如何组合Swing GUI的文章。这是关于一个数独解算器的,但是将任何Swing GUI放在一起的步骤都是一样的;(视图)呈现(并可选地编辑)模型中的值。所以,如果我已经创建了一个接口,它就可以了?