Java 当我的复选框被选中时,我如何让它做一些事情?
例如,我有5个复选框cb1-cb5。cb1优于其他4个,这意味着只有在所有其他4个都已检查的情况下,才能检查cb1。如果我检查cb1,其他4个都会自动检查。这是我当前的java代码此代码位于onCreate方法中: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
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循环,我并没有将监听器设置为每个按钮,只是其中的大多数按钮,它工作得非常完美!谢谢您: