Если у меня есть следующие enum
:Могу ли я добавить JRadioButton для каждого значения в перечислении?
private enum Difficulty {
EASY("Easy"),
MEDIUM("Medium"),
HARD("Hard"),
EXTRA_HARD("Extra Hard");
public final String name;
private Difficulty(String name) {
this.name = name;
}
}
И у меня есть Choice
, что я хочу, чтобы добавить каждый из Difficulty
«s значение:
for (Difficulty diff : Difficulty.values()) {
choiceDiff.add(diff.name);
}
и я добавить ItemListener
:
choiceDiff.addItemListener((ItemEvent e) -> {
labDifficulty.setText("High Score for " + choiceDiff.getSelectedItem() + " Difficulty:");
labDifficultyScore.setText(Integer.toString(HIGH_SCORES[choiceDiff.getSelectedIndex()]));
}
Теперь, если бы я хотел иметь несколько JRadioButton
s вместо Choice
; есть ли способ сделать это аналогично тому, что у меня выше? Я хочу иметь возможность изменять уровни сложности и их информацию (они будут иметь больше атрибутов, чем просто имя при полной реализации), избегая повторения и имея enum
в качестве центрального момента, чтобы внести какие-либо изменения в трудности.
Я хотел бы сделать что-то вроде этого (игнорируя пока что EXTRA_HARD
«s name
имеет место в нем):
ButtonGroup btgrpDiff = new ButtonGroup();
for (Difficulty diff : Difficulty.values()) {
String name = diff.name;
JRadioButton name = new JRadioButton(diff.name);
name.addItemListener((ItemEvent e) -> {
labDifficulty.setText("High Score for " + diff.name + " Difficulty:");
labDifficultyScore.setText(Integer.toString(HIGH_SCORES[diff.ordinal()]));
}
btgrpDiff.add(name);
}
Есть ли способ сделать эту работу, или есть какой-то другой что привело бы к такому же результату?
Что не работает точно? (При этом 'name' с' String' и 'JRadioButton' запутывает.) –
' name' во втором цикле for не было действительно нужно. Я просто хотел показать, как я хочу, чтобы он работал лучше. Что не работает, это не распознавание diff.name как допустимого идентификатора для JRadioButton, когда я хочу, чтобы он просто взял «имя» для каждой трудности из «переполнения» сложности. –