我目前正在构建一个 Java GUI 应用程序,并且我将要实现一些看似需要大量思考的东西,至少对于像我这样相对缺乏经验的人来说是这样。
情况
如下:我有一个Customer
域级别的类,它包含一组作业,它也是一个类(Job
)。该应用程序适用于一家虚构的园艺公司,该公司希望管理其客户及其为他们所做的工作。
在 GUI 级别,我为所有客户提供了一个 jList,其自定义列表模型扩展了AbstractListModel
. 我的应用程序的这一部分运行良好,我可以轻松地添加/编辑/删除客户,而且应该如此。
目标
现在是实现一个jTable,它应该显示在jList 中选择的客户的工作。
毫无疑问,我需要一个 custom TableModel
,问题是:从哪里获取数据?需要注意的是,Customer
类中作业的集合是一个ArrayList
,并且该类没有直接返回这个ArrayList的方法,只能得到一个副本,因为我不希望它可以改变集合在课堂上直接从公共环境中。
我的点子
就是让tablemodel有一个改变内部集合的方法,带一个customer
参数。当索引中的索引jList
发生变化时,应该调用该方法,以便 jTable 代表Job
已为客户完成的 s。当我必须编辑/创建/删除作业时,更改总是首先在 tablemodel上完成,这会将更改传播到customer
对象(在新作业或作业删除的情况下)。
问题
这是实现它的好方法吗?我感觉不是Job
,因为如果我忘记通过tablemodel对a做任何更改,而直接放在Customer
or上Job
,就会出现不一致和麻烦。有没有更好的方法?如果它涉及改变其他东西,我不介意。
(可选)小子问题
Collection
我对java中的不同s缺乏一些知识。我通常只选择ArrayList
,就像在这种情况下Customer
(可变)工作一样。有更好的收藏吗?