я пытаюсь связать 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;
}
я ожидаю, что если кнопка атаки нажата, она должна реализовать метод атаки, и если их не отметить, она должна активировать кнопку режима защиты. Поэтому одна из кнопок всегда должна быть включена.




Добавьте свои кнопки в группа кнопок
Так:
ButtonGroup bgroup = new ButtonGroup();
bgroup.add(getRdbtnAttackMode());
bgroup.add(getRdbtnDefensiveMode());
На каждую кнопку ставь ActionListener и будет тебе счастье
Если у вас есть только два режима, объявите одну статическую кнопку и установите режим защиты по умолчанию, когда пользователь нажимает на кнопку, он переключается между режимами.