Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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_Android_Eclipse_Checkbox_Checked - Fatal编程技术网

Java 当我的复选框被选中时,我如何让它做一些事情?

Java 当我的复选框被选中时,我如何让它做一些事情?,java,android,eclipse,checkbox,checked,Java,Android,Eclipse,Checkbox,Checked,例如,我有5个复选框cb1-cb5。cb1优于其他4个,这意味着只有在所有其他4个都已检查的情况下,才能检查cb1。如果我检查cb1,其他4个都会自动检查。这是我当前的java代码此代码位于onCreate方法中: final CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1); final CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2); final CheckBox cb3

例如,我有5个复选框cb1-cb5。cb1优于其他4个,这意味着只有在所有其他4个都已检查的情况下,才能检查cb1。如果我检查cb1,其他4个都会自动检查。这是我当前的java代码此代码位于onCreate方法中:

final CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1);
final CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2);
final CheckBox cb3 = (CheckBox) findViewById(R.id.checkBox3);
final CheckBox cb4 = (CheckBox) findViewById(R.id.checkBox4);
final CheckBox cb5 = (CheckBox) findViewById(R.id.checkBox5);
cb1.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( cb1.isChecked() )
        {
            cb2.isChecked();
            cb3.isChecked();
            cb4.isChecked();
            cb5.isChecked();
        }
    }
});

我是一个完全的初学者,所以代码可能是完全错误的,或者只是一个小错误,我看不出来。不管怎样,我都会感谢你的帮助。另外,如果我的方法太复杂,有更简单的方法,请告诉我。

为我创建一个类

public class CheckBoxListener implements OnCheckedChangeListener {

    public CheckBoxListener() {

    }


    @Override
    public void onCheckedChanged(CompoundButton view, boolean isChecked) {
        switch(view.getId()) {
        case R.id.checkBox1: 
            //do something
        case R.id.checkBox2:

        case ...
        }

    }
}
然后将此侦听器设置为所有复选框:

final CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1);
final CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2);
final CheckBox cb3 = (CheckBox) findViewById(R.id.checkBox3);
final CheckBox cb4 = (CheckBox) findViewById(R.id.checkBox4);
final CheckBox cb5 = (CheckBox) findViewById(R.id.checkBox5);
cb1.setOnCheckedChangeListener(new CheckBoxListener());
cb2.setOnCheckedChangeListener(new CheckBoxListener());
cb3.setOnCheckedChangeListener(new CheckBoxListener());
cb4.setOnCheckedChangeListener(new CheckBoxListener());

如果要选中复选框,请使用setSelectedtrue。isChecked仅检查复选框是否选中,它不会选择/取消选择它。您还应该为所有复选框设置OnCheckedChangeListener,而不仅仅是cb1。此外,您应该考虑禁用CB1直到检查所有其他复选框。这将使用户更清楚地了解正在发生的事情。@Maroun看起来他只是在使用java.awt中的复选框,而不是swing中的复选框,因此该命令为SetStateTTrue-但请记住,将状态设置为那样不会生成选中的复选框event@DavidChristo +1, 100%. 谢谢,我错过了:把它作为一个答案发布。谢谢你的答案,我接受的答案对我帮助最大,但每一个答案和评论都帮助我让它发挥作用,你们真是太棒了。我最终并没有这样做。我使用了IF循环,我并没有将监听器设置为每个按钮,只是其中的大多数按钮,它工作得非常完美!谢谢您: