我有几个复选框和2个计数器... counter1
计算使用以下代码检查了多少个复选框
if (isChecked) {
counter++;
} else {
counter--;
}
这就像一个魅力,但现在我希望counter2
跟踪属于“绿色”组的已选中复选框...例如复选框1,2,4和7属于“绿色” “组和复选框3,5,6,8不是。
if (chk1.isChecked() || chk2.isChecked() || chk4.isChecked() || chk7.isChecked()) {
counter2++;
}
我尝试使用另一个if else
来查看检查了多少“绿色”组
但是当我使用
System.out.println(counter2);
然后我总是得到counter1
的值。
为什么会这样?是因为counter1
检查所有选中的复选框和否决counter2
?
答案 0 :(得分:2)
int counter2 = 0; // reset counter
for (Checkbox chk : allCheckboxes)
{
if (chk.isChecked() && isGreen(chk)) {
counter2++;
}
}
//...
和utilily方法
private boolean isGreen(Checkbox chk)
{
// return true is checkbox is green
}
答案 1 :(得分:2)
如上所述,您可以检查一次是否选中了任何一个方框。如果counter2总是显示与counter1相同的值,那可能是一个简单的拼写错误的结果。没有看到你的代码就不可能说。但变量不能只是否决另一个变量。
你使用的是Swing
和JCheckBox
吗?如果是这样,您可以添加ItemListener
,如果您还没有。{1}}。然后,您可以动态更新计数器以反映复选框的当前状态。 itemStateChanged
方法的代码可能如下所示:
public void itemStateChanged(ItemEvent arg0) {
if (arg0.getStateChange() == ItemEvent.DESELECTED) {
counter--;
} else {
counter++;
}
// update label or something
}
您可以为绿色组使用不同的ItemListener
,另外设置counter2
。
这使您免于所有迭代检查。