所以我希望JMenu等级有三个JCheckBoxMenuItem,比如Easy,normal和expert。 当然,只能检查一个,如果选中一个,则无法取消选中(启用(false)),因为它是唯一的一个。 我希望在检查一个JCheck时,所有其他都未选中。
所以看起来很容易,但我找到的唯一解决办法就是在很多“if”条件下做到这一点。
有没有办法用更好的算法做到这一点?
答案 0 :(得分:4)
听起来你最好使用JRadioButton,因为复选框通常用于多选项和单选按钮中的复选框。 JRadioButtons可以使用ButtonGroup组合在一起,ButtonGroup一次只能选择一个。
答案 1 :(得分:1)
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);
}
}
答案 2 :(得分:0)
我只是将所有JCheckBoxMenuItem放入一个数组中 每次我选择一个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语句的做法