我正在尝试将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;
}我期望如果攻击按钮被点击,它应该实现攻击方法,如果没有选中它,它应该激活防御模式按钮。因此其中一个按钮必须始终处于启用状态
发布于 2019-04-04 00:07:28
将您的按钮添加到button group
如下所示:
ButtonGroup bgroup = new ButtonGroup();
bgroup.add(getRdbtnAttackMode());
bgroup.add(getRdbtnDefensiveMode());为每个按钮创建一个ActionListener,这样就很好了
https://stackoverflow.com/questions/55497867
复制相似问题