#java #eclipse
#java #eclipse
Вопрос:
я пытаюсь связать 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;
}
я ожидаю, что при нажатии кнопки атаки она должна реализовать метод атаки, и если флажок снят, он должен активировать кнопку режима защиты. Таким образом, одна из кнопок всегда должна быть включена
Комментарии:
1. Если у вас есть только два режима, объявите одну статическую кнопку и установите режим по умолчанию в defense, когда пользователь нажимает на кнопку, он переключается между режимами.
Ответ №1:
Добавьте свои кнопки в группу кнопок
Вот так:
ButtonGroup bgroup = new ButtonGroup();
bgroup.add(getRdbtnAttackMode());
bgroup.add(getRdbtnDefensiveMode());
Для каждой кнопки создайте ActionListener
, и у вас все будет хорошо