我在Jframe中有两个JPanel。上面板有一个JCombobox。基于上面板中的组合框中的选择,下面板由各种组件动态填充。要添加到下面板的组件的类型和数量始终是动态的。下面的例子 -
降低JPanel:
JLabelA:JCombobox
JLabelB:JCombobox + JTextfield
JLabelC:JCombobox1 + JCombobox2 + JCombobox3
JLabelD:JList
用户可以选择/输入所需组件中的值,然后单击“提交”按钮。点击按钮。我需要进行自定义验证(例如,某些组件是必需的,一些是可选的,如果是上面的JLabelC,则在所有三个组合框中都选择了值)。一旦通过所有验证,我需要在下面板中获取用户选择/提供的值。请注意,下面板中组件的名称不固定,因此我无法直接获取值。一种方法是逐个遍历下面板中的所有组件并选择值。这似乎不是很有效,因为我需要遍历所有内容,而我只需要遍历那些用户提供了一些输入的内容。
查询 -
1)我们如何将验证附加到组件上(正如我们在JavaScript验证中所做的那样)?
2)请建议用于获取组件值的替代方法。
答案 0 :(得分:0)
我已经看过(传统)代码遍历JComponents并将多用途侦听器绑定/解绑到组合框,文本字段等。我记得它工作(它用于将“脏”侦听器附加到所有可编辑的小部件,以防止用户留下未保存的更改)。
如果要进行实时验证,可以将ChangeListeners或ActionListeners附加到JComboBoxes或JLists和DocumentListeners到JTextField文档。我尝试过使用InputVerifiers,但是当你搞砸组件焦点时,这对用户来说通常是一个问题。