2013-10-08 30 views
0

我有三個JCheckBox的類似以下內容:如何在ButtonGroup中選擇多個JCheckBoxe?

final JCheckBox c1 = new JCheckBox("A"); 
final JCheckBox c2 = new JCheckBox("B"); 
final JCheckBox c3 = new JCheckBox("C"); 

我做一團由ButtonGroup的這個複選框類似以下內容:

final ButtonGroup bg = new ButtonGroup(); 
bg.add(c1); 
bg.add(c2); 
bg.add(c3); 

我有一個按鈕,顯示選擇的項目爲標籤,就像下面:

String SelectedItem=""; 
Enumeration<AbstractButton> items= bg.getElements(); 
while (items.hasMoreElements()) { 
    AbstractButton btn = items.nextElement(); 
if(btn.isSelected()) 
{ 
     SelectedItem+=btn.getText()+","; 
    } 
} 
lblA.setText(SelectedItem); 

這工作正常,但我不能在運行時選擇多個複選框。

+0

@kleopatra,你能幫助我嗎? –

+3

*「但我不能在運行時選擇多個複選框」* ...他們在按鈕組...這就是要點... – MadProgrammer

回答

7

ButtonGroup的用途是多重排除選擇。僅當您想要獲得按鈕集合時,才能創建ButtonGroup。而不是ButtonGroup使用標準集合,如ArrayList

List<JCheckBox> buttons = new ArrayList<>(); 
buttons.add(c1); 
buttons.add(c2); 
buttons.add(c3); 

... 

for (JCheckbox checkbox : buttons) { 
    if(checkbox.isSelected()) 
    { 
     SelectedItem += btn.getText() + ","; 
    } 
} 

進一步通知:在Swing事件線程(invokelater),remeber,最好是在這樣的連接來創建StringBuilder的,但與UI組件的數量是這樣做的更新(.setText),性能的影響propably將並不明顯。

+0

我使用ArrayList buttons = new ArrayList ();我的問題解決了。 –

4

從文檔:

類的ButtonGroup

此類用於創建一組 按鈕的多個排阻範圍。使用相同的ButtonGroup對象創建一組按鈕 意味着打開這些按鈕之一會關閉組中的所有其他按鈕。

這就是說,你可能使用了錯誤的類做你需要什麼,如果你希望將這些複選框,將它們放在面板上,比你能工作的可見性,位置和與所有其他屬性面板而不是每個複選框。

這裏是鏈接到文檔:Link

相關問題