我有三个如下所示的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/