Вот урезанный пример, включающий подкласс JPanel, который позволяет вам выбирать значение из Enum с помощью переключателей.Чтобы использовать его, вы должны сделать что-то вроде:
enum Animal { DOG, CAT, FISH };
RadioPanel<Animal> animal_panel = new RadioPanel<Animal>(Animal.class);
dialog.add(animal_panel);
...
Animal favorite_animal = animal_panel.getSelectedOption();
Сам класс:
public class RadioPanel<T extends Enum<T>> extends JPanel {
private Map<T,JRadioButton> buttons;
private ButtonGroup button_group;
private Class<T> clazz;
public RadioPanel(Class<T> clazz) {
this.clazz = clazz;
buttons = new EnumMap<T, JRadioButton>(clazz);
button_group = new ButtonGroup();
for (T value : clazz.getEnumConstants()) {
JRadioButton button = new JRadioButton(value.toString());
buttons.put(value, button);
button_group.add(button);
add(button);
}
}
public void setSelectedOption(T value) {
buttons.get(value).setSelected(true);
}
public T getSelectedOption() {
for (T value : clazz.getEnumConstants()) {
if (buttons.get(value).isSelected())
return value;
}
return null;
}
}