2012-08-23 71 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,但當你用組件焦點旋轉時,它通常是用戶的問題。