【问题标题】:Fetching values of components in JPanel在 JPanel 中获取组件的值
【发布时间】:2012-08-18 16:24:58
【问题描述】:

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

下 JPanel:

JLabelA:JCombobox

JLabelB:JCombobox + JTextfield

JLabelC:JCombobox1 + JCombobox2 + JCombobox3

JLabelD: JList

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

查询-

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

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

【问题讨论】:

  • 在创建/布局组件时能否保留对组合框等的引用?
  • 是的,我可以。但是我看到的问题是——我将如何区分两个 JTextFields 或 JcomboBoxes?上面示例中给出的四种组件组合是四种“类型”,每种“类型”都可以在面板中出现多次。创建每个“类型”的代码是相同的,并且会被多次调用。我说清楚了吗?

标签: validation dynamic components jpanel fetch


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2010-09-27
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多