2

我为一位工程师朋友做了一个帮助他安排工厂生产计划的程序。每种类型的产品都分解为一组步骤(它们有很多相同的步骤,但也有一些区别)。

编程问题:

每次注册新的生产流程时,我都会显示一些代表上述步骤的复选框。他可以选择需要为此特定产品添加哪些步骤。如果他选中一个复选框,则会出现两个(或更多)文本字段,他可以在其中添加其他信息(开始日期、持续时间、评论等)。我的问题是这是很多单独的组件,我不确定如何处理它们。因为我需要在某个时候访问所有这些(用于查看是否需要该步骤的复选框以及数据的所有文本字段),所以我想将它们全部作为字段,但这感觉不对。 ..

另一种方法可能是创建一个容器类,将文本字段与复选​​框组合在一起。像这样的东西:

ArrayList<MyComponentGroup> group;
for (MyComponentGroup cg : group) {
    if (cg.getCheckBox().isSelected()) {
        //access and read the data from all the textfields in this object
    }
}

处理这种情况的 Java 编程约定或最常用的方法是什么?

4

2 回答 2

3

以下是我在处理大量组件和类似要求时会做的事情:

  • 我将对选项(通过复选框选择可用)和要填充的相关数据(要求)之间的关系进行建模。该模型可能已经可供您使用。
  • 我会尝试使用PropertyEditor实例并将它们映射到模型元素。
  • 当需要保存或使用用户填写的数据时,我只需遍历屏幕上表示的模型,获取相关的编辑器并处理这些编辑器的值。

我认为我上面描述的方法会给你更少的工作,并且可能会给你的朋友带来更多的灵活性。

您只需支付在良好模型中获取组件关系/依赖关系以及注册相关 PropertyEditor 以进行可视化编辑的初始成本。

于 2013-06-06T21:32:41.960 回答
2

一种方法是始终如一地给每个人JComponent一个唯一的名称。使用分层的东西来适应复杂的过程,比如“Whites.Rinsecycle.enableCB”。为了完整起见,将此字符串作为 clientProperty 存储在 JComponent 中。然后你可以使用它作为一个大的键Map来访问所有的组件。

也许不是最“优雅”的(我倾向于使用具有相关领域的 JPanel 层次结构),但对于一个稍微快速和肮脏、中等规模的项目来说,这是合理的。

于 2013-06-06T21:10:51.807 回答