2012-01-19 67 views
4

我有一個Java對話框,向用戶提供了15個複選框。有沒有辦法一次獲得所有選中的複選框的名稱?目前,如果他們被選中,我正在逐個尋找,這不是解決方案的花哨。獲取Java中所有選定的複選框

我在尋找類似的東西Getting all selected checkboxes in an array但隨後在Java中

+1

並非所有的東西都是花式的。 –

+0

它的確如此。可能會在稍後添加或刪除複選框,並且我不想每次都手動操作處理程序 – Freek8

+1

您在談論哪種複選框? JCheckBox的?你在一個servlet嗎?在MVC框架中? –

回答

7

當您將複選框添加到對話框中時,還需要在某種集合中保留引用。然後,當你想查看哪些被檢查時,你可以迭代集合並檢查它們中的每一個的狀態。你可以通過調用getText來獲得名稱。

5
List<JCheckBox> checkboxes = new ArrayList<JCheckBox>(); 
for(Component comp : panel.getComponents()) { 
    if(comp instanceof JCheckBox) checkboxes.add((JCheckBox)comp); 
} 

這是假設所有的JCheckBox的實例是容器板的直接孩子。如果沒有,那麼你需要使用相同的邏輯遞歸訪問面板的所有容器。現在,雖然您可以執行此操作,但是將這些引用保存到列表中通常會更好。然後,您可以輕鬆地遍歷所有複選框,而無需執行上述代碼。如果你有嵌入式組件,最好要求嵌入式組件通過它所擁有的複選框執行任何你想要的操作(而不是通過getter把它們從組件中拉出來,這樣你就可以用某種方式搞亂它們)。

+0

謝謝,看起來像這樣可以工作:) – Freek8

+0

或者,當您創建對話框時,您可以將複選框添加到'ArrayList '。這樣他們不需要是容器面板的直接子女。 – user949300

+0

@ user949300是的,我在答案中也描述了確切的方法。 – chubbsondubs