如何获取JCheckbox的选定索引?
如何从JCheckbox获取所选索引(从使用for循环添加到屏幕的一些jcheckbox)?
// for some t values: checkBoxes[t] = new JCheckBox("Approve"); checkBoxes[t].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { boolean selected = checkBoxes[t].isSelected(); System.out.println("Approved"+selected); } });
当我单击复选框时,我想获得所选复选框的索引。
你有一个JCheckBox数组,你可以简单地遍历你的数组并找出选择了哪个JCheckBox。
关于:
当我单击复选框时,我想获得所选复选框的索引。
编辑:您将通过使用传递给ActionListener的ActionEvent的getSource()
方法找出选择了哪个复选框。 例如,您可以将ActionListener更改为如下所示:
checkBoxes[t].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { boolean selected = checkBoxes[t].isSelected(); System.out.println("Approved"+selected); int index = -1; for (int i = 0; i < checkBoxes.length; i++) { if (checkBoxes[i] == e.getSource()) { index = i; // do something with i here } } } });
据我所知,您希望获取所选JCheckBox
的索引,以便对用户的操作做出适当的响应。
如果是这种情况,您可能需要考虑不同的方法:您可以为每个复选框注册ItemListener
。
JCheckBox check = new JCheckBox("Approve"); check.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (check.isSelected()){ System.out.println(check.getName() + " is selected"); } } });
(受java2s.com教程启发)
在这种情况下,事件将立即触发,您将始终知道刚刚单击了哪个复选框。
通过复选框迭代并检查isSelected标志
我会尝试类似的东西:
for (int i=0; i < checkBoxes.length; i++) { if (checkBoxes[i].isSelected() == true) { index = i; } return index; }
从你的问题来看,这就是我所收集的你正在寻找的东西。
编辑:
我上面的方法是有缺陷的,因为它使得非常天真的方法是选择一个且仅一个框,并且不会取消选择框。
'e'是ActionEvent对象,
for (int i=0; i < checkBoxes.length; i++) { if (checkBoxes[i] == e.getSource()) { index = i; } } return index;
这样就识别出最近的选择或取消选择复选框。