我有三个如下所示的JCheckBox:

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);


这项工作正常,但我无法在运行时选择多个复选框。

最佳答案

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事件线程(.setText)中进行更新(invokelater),请记住最好在这种级联中创建StringBuilder,但是对于这样的UI组件数量,性能影响可能不会明显。

关于java - 如何选择多个JCheckBoxe到ButtonGroup中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19245510/

10-09 05:47