一个小小的背景故事:我正在为一位工程师朋友做一个忙,让他成为一个帮助他安排factorys生产的计划。每种类型的产品都分解为一系列步骤(它们共享很多步骤,但存在一些差异)。
编程问题:
每次注册新的生产过程时,我都会显示一些代表前面提到的步骤的复选框。他可以选择为这个特定产品添加哪些步骤。如果他选中一个复选框,则会出现两个(或更多)文本字段,他可以在其中添加其他信息(开始日期,持续时间,评论等...)。我的问题是,这是很多单独的组件,我不确定如何处理它们。因为我需要在某个时刻访问所有这些(复选框以查看是否需要该步骤以及数据的所有文本字段)我正在考虑将它们全部作为字段,但这感觉不对。 ..
另一种方法可能是创建一个容器类,将文本字段与复选框组合在一起。像这样:
ArrayList<MyComponentGroup> group;
for (MyComponentGroup cg : group) {
if (cg.getCheckBox().isSelected()) {
//access and read the data from all the textfields in this object
}
}
什么是Java编程约定或最常用的方法来处理这种情况?
提前致谢, 的István
答案 0 :(得分:3)
这是我在处理大量组件和类似要求时会做的事情:
我认为上面介绍的方法可以减少你的工作量,并为你的朋友带来更大的灵活性。
您只需支付在漂亮的模型中获取组件关系/依赖关系的初始成本,以及注册用于可视化编辑的重要PropertyEditors。
希望它有所帮助。
答案 1 :(得分:2)
一种方法是始终为每个JComponent
提供唯一的名称。使用层次结构来适应复杂的过程,例如“Whites.Rinsecycle.enableCB”。为了完整性,将此String存储为JComponent中的clientProperty。然后,您可以将其用作大Map
中的密钥来访问所有组件。
也许不是最“优雅”(我倾向于使用相关领域的JPanels层次结构),但对于稍微快速和肮脏,中等规模的项目,这是合理的。