获取JPanel中的组件值

时间:2012-08-23 07:32:11

标签: validation dynamic components jpanel fetch

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

降低JPanel:

JLabelA:JCombobox

JLabelB:JCombobox + JTextfield

JLabelC:JCombobox1 + JCombobox2 + JCombobox3

JLabelD:JList

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

查询 -

1)我们如何将验证附加到组件上(正如我们在JavaScript验证中所做的那样)?

2)请建议用于获取组件值的替代方法。

1 个答案:

答案 0 :(得分:0)

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

如果要进行实时验证,可以将ChangeListeners或ActionListeners附加到JComboBoxes或JLists和DocumentListeners到JTextField文档。我尝试过使用InputVerifiers,但是当你搞砸组件焦点时,这对用户来说通常是一个问题。