2012-08-23 28 views
0

我在Jframe中有两个JPanel。上面的面板有一个JCombobox。下面板根据上面面板中组合框的选择,由各种组件动态填充。要添加到下面板的组件的类型和数量始终是动态的。下面的示例 -获取JPanel中组件的值

底部JPanel:

JLabelA:JComboBox中

JLabelB:JComboBox中+的JTextField

JLabelC:JCombobox1 + JCombobox2 + JCombobox3

JLabelD:JList的

甲用户可以在所需组件中选择/输入值,然后单击提交按钮。点击按钮。我需要进行自定义验证(例如,某些组件是必需的,一些是可选的,如果是上述JLabelC,则在所有三个组合框中都选择了值)。一旦所有的验证通过,我需要在下面的面板中获取用户选择/提供的值。请注意,下面板中组件的名称不是固定的,所以我无法直接获取值。一种方法是逐个遍历下面板中的所有组件,并选取值。这看起来效率不高,因为我需要遍历所有,而我只需要遍历用户提供了一些输入的那些。

查询 -

1)如何才能附加验证到组件(如我们可以在JavaScript验证做)?

2)请提出替代方法来获取组件的值。

+0

在创建/布置组件时,您能否保留对组合框的引用? – EthanB

+0

是的,我可以。但是我看到的问题是 - 我将如何区分两个JTextFields或JcomboBoxes?上例中给出的四个组件组合是四个“类型”,每个这样的“类型”可以在面板中多次出现。创建每个'类型'的代码是相同的,并被多次调用。我清楚了吗? –

回答

0

我已经看到(遗留)遍历JComponents并绑定/解除绑定到组合框,文本字段等多用途侦听器的代码。我记得它的工作原理(它用于将“脏”侦听器附加到所有可编辑的小部件,以防止用户离开未保存的更改)。

如果您想要进行实时验证,您可以将ChangeListeners或ActionListeners附加到JComboBoxes或JLists和DocumentListeners到JTextField文档。我尝试过使用InputVerifiers,但当你用组件焦点旋转时,它通常是用户的问题。