我试图将JRadioButton链接到一个接口和一个实现该接口的方法。我有两种模式,即攻击和防御模式,我希望用户能够点击攻击切换按钮并启用它,当它未被点击时,它会激活防御模式
来自班级的代码
public class AttackMode implements GameBehaviour {
public boolean behaviourMode(int numOfShips) {
if(numOfShips < 3){
return true;
}
return false;
}
}
Code From Java Swing GUI
private JRadioButton getRdbtnDefensiveMode() {
if (rdbtnDefensiveMode == null) {
rdbtnDefensiveMode = new JRadioButton("Defensive Mode");
rdbtnDefensiveMode.setEnabled();
rdbtnDefensiveMode.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
if (arg0.getStateChange() == ItemEvent.SELECTED) {
theRules.theMasterShip.setBadAssBehaviour(new DefenceMode());
rdbtnAttackMode.setSelected(false);
}else if (arg0.getStateChange() == ItemEvent.DESELECTED) {
theRules.theMasterShip.setBadAssBehaviour(new AttackMode());
rdbtnAttackMode.setSelected(true);
}
return;
}
});
rdbtnDefensiveMode.setFont(new Font("Trebuchet MS", Font.BOLD | Font.ITALIC, 11));
rdbtnDefensiveMode.setBounds(658, 355, 109, 23);
}
return rdbtnDefensiveMode;
}
private JRadioButton getRdbtnAttackMode() {
if (rdbtnAttackMode == null) {
rdbtnAttackMode = new JRadioButton("Attack Mode");
rdbtnAttackMode.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
if (arg0.getStateChange() == ItemEvent.SELECTED) {
theRules.theMasterShip.setBadAssBehaviour(new AttackMode());
rdbtnDefensiveMode.setSelected(false);
}else if (arg0.getStateChange() == ItemEvent.DESELECTED) {
theRules.theMasterShip.setBadAssBehaviour(new DefenceMode());
rdbtnDefensiveMode.setSelected(true);
}
}
});
rdbtnAttackMode.setFont(new Font("Trebuchet MS", Font.BOLD | Font.ITALIC, 11));
rdbtnAttackMode.setBounds(658, 265, 109, 23);
}
return rdbtnAttackMode;
}
我期待如果点击攻击按钮,它应该实施攻击方法,如果取消选中它们,它应该激活防御模式按钮。因此必须始终启用其中一个按钮
将您的按钮添加到button group
像这样:
ButtonGroup bgroup = new ButtonGroup();
bgroup.add(getRdbtnAttackMode());
bgroup.add(getRdbtnDefensiveMode());
为每个按钮创建一个ActionListener
,你会很好