[英]JCheckBoxMenuItem only one selected
所以我想有一个JMenu Level,它带有三个JCheckBoxMenuItem,例如Easy,normal和expert。 当然,只能选中一个,如果选中一个,则不能取消选中(enabled(false)),因为它是唯一的一个。 我想当一个JCheck被选中时,所有其他都未被选中。
因此,这似乎很容易,但是我发现的唯一解决方案是在很多“如果”条件下执行此操作。
有没有办法用更好的算法做到这一点?
听起来您最好使用JRadioButton,因为复选框通常用于多选选项,而单选按钮通常用于多个选择。 可以使用ButtonGroup将JRadioButtons分组在一起,而ButtonGroup一次只能选择一个。
public void stateChanged(ChangeEvent e) {
if (e.getSource() == cb1 && cb1.isSelected()) {
cb2.setSelected(false);
cb3.setSelected(false);
} else if (e.getSource() == cb2 && cb2.isSelected()) {
cb3.setSelected(false);
cb1.setSelected(false);
} else if (e.getSource() == cb3 && cb3.isSelected()) {
cb1.setSelected(false);
cb2.setSelected(false);
}
}
我只是将我所有的JCheckBoxMenuItems放在一个数组中,每次选择JCheckBoxMenuItem时都调用此方法
public void clearCheckBoxes(){
for (JCheckBoxMenuItem arrayCB1 : arrayCB) {
if (arrayCB1 != cb) {
arrayCB1.setSelected(false);
} else {
arrayCB1.setSelected(true);
}
}
}
烦人的部分是必须手动将它们放入数组中,也许jMenu类具有返回完整数组的方法,但我没有打扰
arrayCB[0]=bridgeCB;
arrayCB[1]=swampCB;
arrayCB[2]=flowerCB;
arrayCB[3]=MountainCB;
arrayCB[4]=Mountain2CB;
arrayCB[5]=forestCB;
arrayCB[6]=parisCB;
arrayCB[7]=roadCB;
arrayCB[8]=waveCB;
arrayCB[9]=lakeCB;
以防万一,这就是创建数组的方式
JCheckBoxMenuItem [] arrayCB=new JCheckBoxMenuItem[10];
我不知道很多的if语句的方式
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.