Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 混淆复选框问题_Java_Checkbox - Fatal编程技术网

Java 混淆复选框问题

Java 混淆复选框问题,java,checkbox,Java,Checkbox,我有两个复选框和两个计数器。。。计数器1统计使用以下代码选中的复选框数 if (isChecked) { counter++; } else { counter--; } 这就像一个符咒,但现在我希望计数器2跟踪属于绿色组的复选框。。。例如,复选框1、2、4和7属于绿色组,而复选框3、5、6、8不属于绿色组 if (chk1.isChecked() || chk2.isChecked() || chk4.isChecked() || chk7.isChecked()) {

我有两个复选框和两个计数器。。。计数器1统计使用以下代码选中的复选框数

if (isChecked) {
    counter++;
} else {
    counter--;
}
这就像一个符咒,但现在我希望计数器2跟踪属于绿色组的复选框。。。例如,复选框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吗

实用方法

private boolean isGreen(Checkbox chk)  
{  
 // return true is checkbox is green  
}
实用方法

private boolean isGreen(Checkbox chk)  
{  
 // return true is checkbox is green  
}

如上所述,在注释中,如果选中了任何复选框,请选中一次。如果计数器2始终显示与计数器1相同的值,则可能是由于简单的输入错误或其他原因。不看代码就说不出来。但是一个变量不能仅仅否决另一个变量。你使用的是Swingandjcheckbox吗?如果是这样的话,如果您还没有ItemListener,您可以向其中添加ItemListener。然后可以动态更新计数器以反映复选框的当前状态。itemStateChanged方法的代码可能如下所示:


您可以为绿色组使用不同的ItemListener,这会另外设置计数器2。这将使您从所有的迭代检查中解脱出来。

如上注释中所述,如果选中了任何一个框,您将只检查一次。如果计数器2始终显示与计数器1相同的值,则可能是由于简单的输入错误或其他原因。不看代码就说不出来。但是一个变量不能仅仅否决另一个变量。你使用的是Swingandjcheckbox吗?如果是这样的话,如果您还没有ItemListener,您可以向其中添加ItemListener。然后可以动态更新计数器以反映复选框的当前状态。itemStateChanged方法的代码可能如下所示:


您可以为绿色组使用不同的ItemListener,这会另外设置计数器2。这将使您从所有的迭代检查中解放出来。

带“counter2”的代码在哪里?@Dunk使用此if子句,如果选中了这些复选框中的任何一个,您将增加counter2一次,而不是为每个复选框。。。将一种类型的所有复选框放在一个列表中,对其进行迭代,如果选中复选框,则增加计数器2。这里没有足够的内容。为什么不显示所有代码?带“counter2”的代码在哪里?@Dunk使用此if子句,如果选中了这些复选框中的任何一个,您将增加counter2一次,而不是为每个复选框增加一次。。。将一种类型的所有复选框放在一个列表中,对其进行迭代,如果选中复选框,则增加计数器2。这里没有足够的内容。为什么不显示所有代码?
public void itemStateChanged(ItemEvent arg0) {
    if (arg0.getStateChange() == ItemEvent.DESELECTED) { 
        counter--;
    } else {
        counter++;
    } 
    // update label or something
}