处理大量Swing组件

问题描述 投票:2回答: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编程约定或用于处理这种情况的最常用方法?

java swing jcheckbox buttongroup
2个回答
2
投票

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

也许不是最“优雅”的(我倾向于使用带有相关字段的JPanels层次结构,但是对于稍微快又脏,中等大小的项目,这是合理的。


3
投票

这是处理大量零件和类似要求时的工作:

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

我认为我上面描述的方法将减少您的工作量,并有可能为您的朋友带来更大的灵活性。

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

© www.soinside.com 2019 - 2024. All rights reserved.