如何选择多个JCheckBoxe到ButtonGroup?

Sam*_*hdi 0 java swing multi-select jcheckbox buttongroup

我有三个JCheckBox如下:

final JCheckBox c1 = new JCheckBox("A");
final JCheckBox c2 = new JCheckBox("B");
final JCheckBox c3 = new JCheckBox("C");
Run Code Online (Sandbox Code Playgroud)

我通过ButtonGroup为这个复选框创建了一个组,如下所示:

final ButtonGroup bg = new ButtonGroup();
bg.add(c1);
bg.add(c2);
bg.add(c3);
Run Code Online (Sandbox Code Playgroud)

我有一个按钮可以将选定的项目显示在如下标签中:

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

这工作正常,但我无法在运行时选中多个复选框.

Pio*_*ler 8

目的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() + ",";
    }
}
Run Code Online (Sandbox Code Playgroud)

进一步的注意事项:.setText在Swing事件thread(invokelater)中执行updates(),记住最好在这种连接中创建StringBuilder,但是对于这样的UI组件数量,性能影响可能不会引人注意.