我正在通过为他提供一个程序来帮助他安排工厂生产的计划,从而对工程师朋友有所帮助。每种产品都细分为一组步骤(它们共享很多步骤,但有一些区别)。
编程问题:
每次注册新的生产过程,我都会显示多个复选框,这些复选框代表上述步骤。他可以选择为该特定产品添加哪些步骤。如果他选中了一个复选框,则会出现两个(或更多)文本字段,他可以在其中添加其他信息(开始日期,持续时间,评论等)。我的问题是,这是许多单独的组件,我不确定如何处理它们。由于我将需要在某个时候访问所有它们(复选框以查看是否需要执行该步骤以及数据的所有文本字段),因此我考虑将它们全部作为字段,但这并不对。 ..
[另一种方法可能是创建一个将文本字段与复选框分组在一起的容器类。像这样的东西:
ArrayList<MyComponentGroup> group;
for (MyComponentGroup cg : group) {
if (cg.getCheckBox().isSelected()) {
//access and read the data from all the textfields in this object
}
}
什么是Java编程约定或用于处理这种情况的最常用方法?
一种方法是始终给每个JComponent
一个unique名称。使用分层的东西来适应复杂的过程,例如“ Whites.Rinsecycle.enableCB”。为了完整起见,将此字符串存储为JComponent中的clientProperty。然后,您可以将其用作大型Map
中的键来访问所有组件。
也许不是最“优雅”的(我倾向于使用带有相关字段的JPanels层次结构,但是对于稍微快又脏,中等大小的项目,这是合理的。
这是处理大量零件和类似要求时的工作:
我认为我上面描述的方法将减少您的工作量,并有可能为您的朋友带来更大的灵活性。
您只需支付在nice模型中获取组件关系/依赖关系以及注册相关的PropertyEditor以进行可视化编辑的初始费用。